Dim sh As Worksheet
Dim jmenoListu As String
For Each sh In ActiveWorkbook.Sheets
If sh.Name = jmenoListu Then
MsgBox "List již existuje."
End If
Next sh
Pro zjištění názvu měsíce z pořadového čísla lze použít např.:jmenoMesice = Format(DateSerial(2023, mesic, 1), "mmmm")
Jak bude zajištěno pořadí listů v případě, že je takových stejných názvů více - březen, březen(2), březen(1), březen(3)?
Je nutné projít všechny listy sešitu a zjistit kolik takových listů je již vytvořeno a doplnit správnou pořadovou číslovku, která bude navazovat.
Je nutné a smysluplné mít v jednom sešitu takto pojmenované listy?
Za mě to značně komplikuje přehled, který měsíc platí a co znamená. Není lepší vygenerovat kalendář pro celý rok a nějaké změny tohoto typu uživateli neumožnit?
Nebo jaký smysl má toto přejmenování? Co když bude těch listů třeba 20 v jeden měsíc?
Dá se potlačit správnou deklaraci typu proměnné.
Tak teď se v tom požadavku už ztrácím úplně.
Když nechcete použít ověření dat, které to vaše "jednoduše" splňuje, tak netuším co z původního zadání vlastně požadujete.
Další možností je sledování změn na listu v dané oblasti a napsat si makro, které provede co požadujete.
V listu List1 vložit první sloupec, kde sloučit oba vyhledávané sloupce (datum, čas) pomocí CONCAT a pak v listu List2 vyhledat podle vloženého sloupce A VLOOKUP/SVYHLEDAT podle zadaných hodnot A1 a B1.
PavDD napsal/a:
...najít tuto dopsanou hodnotu v seznamu zakázaných /červená oblast/ a pokud tam je, oznámit to,a vrátit to znovu do editace té bunky abych mohl zkusit zadat něco jiného.
Pokud zadaná hodnota v seznamu zakázaných není, tak se normálně uloži.
Nějak nerozumím tomu čeho vlastně chcete dosáhnout.
Ověření dat je právě od toho aby se nezadávaly nechtěné údaje.
Nerozumím pak tomu, proč by se měly někde vyhledávat zkomoleniny, které nepovolíte zadat?
"Kulantně" by to šlo vyřešit definováním jmen do seznamu která jsou povolena zadávat a ty pak nastavit do oblasti ověření dat a nepovolit jiné možnosti -> chybové hlášení ověření dat.
Zkuste přidat Excel s vašim řešením. Nevíme co je tam špatně, ověření dat má i varianty jak se chovat při chybě na vstupu.
Kde jsou chyby, nikde je nevidím, vše se dotahuje správně.
Sloupec B je prázdný, takže co se má porovnat a s čím?
jarek1111 napsal/a:
...Zkoušel jsem, ale vždy nějaká chybka
Nejedná se o sdílený sešit otevřený v prohlížeči? Tam makra nebudou nikdy fungovat.
Nastavení zabezpečení?
Parametry se do procedury/funkce, musí vždy předávat v pořadí v jakém jsou v dané proceduře/funkci deklarovány.
Pokud je parametr v proceduře/funkci označen jako volitelný (Optional) pak se nemusí předat a při volání procedury/funkce musí být "nevyplněn".
např.:
Sub Test
Dim parametr1 as Long, parametr3 as Long
Dim coVrati as long
parametr1=5
parametr3=10
coVrati= mujTest(parametr1, , parametr3) ' součet parametr1+parametr3
'coVrati=15
coVrati= mujTest(parametr1, False, parametr3) 'rozdíl parametr1-parametr3
'coVrati=-5
End sub
Function mujTest(param1, Optional param2=True,param3)
...
if param2 then
mujTest=param1+param3
else
mujTest=param1-param3
endif
End function
Vyhovovat by mělo Application.Goto Application.Goto Reference:=Worksheets("Sheet1").Range("A154"), scroll:=True
EDIT:
Sub ZobrazRadek(radek As Long)
Dim radkuPred As Integer
radkuPred = 10 ' počet volných řádků před požadovaným
If radek - radkuPred > 0 Then
Application.Goto Rows(radek - radkuPred), True
Else
Application.Goto Rows(1), True
End If
Rows(radek).Select ' pouze zvýrazní požadovaný řádek
End Sub
Zobrazí požadovaný řádek posunutý o počet řádků před ním, pokud číslo řádku bude menší než požadovaný posun, bude první řádek vždy na začátku.
sh.Protect UserInterfaceOnly:= Truefunguje i bez hesla (alespoň v MSO2019 ano), ale pak to trochu snižuje ochranu jako takovou, když list může kdokoliv odemknout.
Takže asi i lepší ochrana bude s heslemsh.Protect Password:= "mojeHeslo", UserInterfaceOnly:= Truepopř.sh.Protect "mojeHeslo", , , , True
Pokud nebude konkrétní buňka zamknuta, tak lze do ní zapisovat, tak jako do ní může zapisovat kdokoliv.
Další možností je před zápisem odemknout list a po provedení zápisu opět uzamknout.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.