Chtěl jsem si jen urychlit práci.
Tak zapsat do kódu .Unprotect (HESLO) a .Protect (HESLO) snad nebude zas takový problém né
Ale jo, chápu čeho chceš dosáhnout. Ale nechápu s čím je problém. Formuláři je jedno kolik buněk obsahuje tabulka. Jak si to "naprogramuješ" tak to budeš mít.
Výchozí stav: zamčený list
- Zobrazíš formulář > vyplníš data > (provedeš verifikaci?)
- Odemkneš list
- Zapíšeš data z formuláře do listu
- Zamkneš list
- Zavřeš formulář
List je zamknuty, nelze provádět úpravy, mazat vzorce.
Co? Vždyť píšeš, že používáš formulář?
Odemknout - vložit - zamknout.
Tak schválně ty dva řádky zakomentuj a sleduj co se stane. Jistě na to přijdeš.
Tak?
TextBox6.SetFocus
SOUČIN.SKALÁRNÍ
https://learn.microsoft.com/cs-cz/dotnet/visual-basic/language-reference/operators/like-operator
Umístit do standardního modulu
Private Sub HideLabel1()
List1.Label1.Visible = False
End Sub
Můžeš porovnat hodnotu zadanou do buňky s aktuálním jménem listu a zobrazit hlášku nebo kód ukončit:
JmenoMesice = Format(DateSerial([rok_vykaz], Target, 1), "mmmm")
If JmenoMesice = ThisWorkbook.ActiveSheet.Name Then Exit Sub
If ListExistuje(JmenoMesice) = True Then
'Přejmenování listu podle změny v buňce B6
Private Sub Worksheet_Change(ByVal Target As Range)
Dim JmenoMesice As String
If Not Intersect(Me.Range("B6"), Target) Is Nothing Then
If Target = "" Then
Exit Sub
Else
JmenoMesice = Format(DateSerial([rok_vykaz], Target, 1), "mmmm")
If ListExistuje(JmenoMesice) = True Then
MsgBox "List s názvem " & JmenoMesice & " již existuje, proto jej nebylo možné použít znovu v procesu automatizovaného pojmenování tohoto listu. Výchozí název listu můžeš ale přejmenovat ručně standardním způsobem zvolením jiného vhodného názvu.", vbExclamation, "Konflikt s duplicítním názvem listu"
Exit Sub
Else
Application.ActiveSheet.Name = JmenoMesice
End If
End If
End If
End Sub
Private Function ListExistuje(ByVal strJmeno As String) As Boolean
On Error Resume Next
ListExistuje = Not Worksheets(strJmeno) Is Nothing
End Function
Kde je zakopaný pes?
1) řádně nedeklaruješ proměnné.
2) práce s definovaným názvem ve VBA -> [rok_vykaz] nebo Jménolistu.Range("rok_vykaz")
3) Tvůj kód bude neustále provádět přejmenování při jakékoliv změně na listu
4) Není ošetřen vstup (Target) na zadání jiných hodnot než čísel z rozsahu 1 až 12
Já Ti to přece nenutím! Dělej si s tím co chceš.
Sub PridejList()
Dim JmenoListu As String
JmenoListu = "Tralala"
If ListExistuje(JmenoListu) = False Then
Worksheets.Add.Name = JmenoListu
Else
MsgBox "List s názvem: """ & JmenoListu & """ již existuje. Zvolte jiné jméno", _
vbExclamation, "Duplicita listů"
End If
End Sub
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.