Zelle über VBA sperren
In der ComboBox111 kann man folgendes auswählen:
- Arbeitstag
- Urlaub
- Krank
Die ComboBox111 ist mit der Zelle D2 verlinkt.
Wenn ich nun Urlaub oder Krank auswähle,
wird als erstes die Combobox geleert und danach ausgeblendet.
nun sollen die Zelle für die nachträgliche Bearbeitung gesperrt werden.
Wenn ich aber Arbeitstag auswähle,
soll die Zelle wieder zum bearbeiten freigegeben sein.
Der bisherige Code lautet:
Private Sub ComboBox111_Change()
If ComboBox111.Value = "Urlaub" Or ComboBox111.Value = "Krank" Then
ComboBox1.Value = ""
ComboBox1.Visible = False
ComboBox2.Value = ""
ComboBox2.Visible = False
Else
ComboBox1.Visible = True
ComboBox2.Visible = True
End If
End Sub
Die ComboBox1 ist mit der Zelle T12 verlinkt
Die ComboBox2 ist mit der Zelle V14 verlinkt
Wenn ich die Zellen unter
Zelle formatieren -> Schutz -> Gesperrt
schützen möchte, kann ich aber wenn Arbeitstag ausgewählt wurde
in der ComboBox nichts auswählen, da die Zelle schreibgeschützt ist.
kann mir Bitte jemand helfen?
3 Antworten
Private Sub ComboBox111_Enter()
T12.locked = false
V14.locked = false
End Sub
Das ganze fügst du einfach in deinen Quelltext zwischen deinen bereits bestehenden Funktionen ein. Sprich hinter ein End Func bzw. ein anderes End Sub.
Es funktioniert ähnlich deinem _Change welches das Ergeignis von einem Wechsel innerhalb der Combobo111 ist. Also du z.B. den Text in deiner ComboBox änderst. Das _Enter() bewirkt, dass der folgende Code bis zum "End Sub" ausgeführt wird, sobald du in die ComboBox111 reinklickst.
Hallo Kidd0
Ich habe deinen Code ausprobiert. Er funktioniert bei mir nicht.
wenn ich die Zelle T12 entsperren will, muß da nicht noch was davor?
Wenn du eine Zelle bzw. mehrere Zellen im Arbeitsblatt entsperren möchtest dann kannst du das am besten so tun:
Worksheets(1).Range("T12").Select
Selection.Locked = False
Wobei du da nur noch den Name des Worksheets anpassen müsstest. Das ganze Paket kommt in deine ComboBox111_Enter()
Falls es nicht klappt melde dich nochmal. Dann probiere ich es selbst aus. Der Code oben ist derzeit nur in meinem Kopf. :)
Hallo Kidd0
ich habe probiert, probiert und bin verzweifelt.
Da es nich funktioniert, kann es nur falsch sein.
ich benötige bitte noch mal deine Hilfe
In Private Sub ComboBox111_Change()
werden die Boxen ein und ausgeblendet.
In Private Sub Worksheet_SelectionChange(ByVal Target As Range)
werden Die Zellen gesperrt, wenn die Boxen ausgebendet sind.
Wenn in der ComboBox111 nun Arbeitstag ausgewählt wird,
dann sollen die Zellen entsperrt werden.
Das funktioniert aber nur wenn ich vorher in eine Zelle klicke.
Kannst du mir sagen, wo der neue Code eingefügt werden muss,
damit die ComboBoxen 1 und 2 eingeblendet sowie
die Zellen T12 und V14 gleich entsperrt werden, wenn ich Arbeitstag auswähle.
Die ganzen Code stehen in der Tabelle1(E01) warum muss ich die noch mal im Code angeben?
Private Sub ComboBox111_Change ()
If ComboBox111.Value = "Urlaub" Then
ComboBox1.Value = ""
ComboBox1.Visible = False
ComboBox2.Value = ""
ComboBox2.Visible = False
Else
ComboBox1.Visible = True
ComboBox2.Visible = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect
If ComboBox111.Value = "Urlaub" Then
Range("T12").Locked = True
Range("V14").Locked = True
Else
Range("T12").Locked = False
Range("V14").Locked = False
End If
ActiveSheet.Protect
End Sub
Private Sub Combobox111_Enter()
Worksheets(E01).Range("T12").Select
Worksheets(E01).Range("V14").Select
Selection.Locked = False
Private Sub ComboBox111_Change ()
If ComboBox111.Value = "Urlaub" Then
ComboBox1.Value = ""
ComboBox1.Visible = False
ComboBox2.Value = ""
ComboBox2.Visible = False
Else
ComboBox1.Visible = True
ComboBox2.Visible = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect
If ComboBox111.Value = "Urlaub" Then
Range("T12").Locked = True
Range("V14").Locked = True
Else
Range("T12").Locked = False
Range("V14").Locked = False
Worksheets(E01).Range("T12").Select
Worksheets(E01).Range("V14").Select
Selection.Locked = False
End If
ActiveSheet.Protect
End Sub
So müsste es funktionieren, wenn du die Zellen Entsperren und gleichzeitig freigeben willst.
Hallo ich habe bis jetzt folgenden Code erstellt.
Private Sub ComboBox111_Change ()
If ComboBox111.Value = "Urlaub" Then
ComboBox1.Value = ""
ComboBox1.Visible = False
ComboBox2.Value = ""
ComboBox2.Visible = False
Else
ComboBox1.Visible = True
ComboBox2.Visible = True
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect
If ComboBox111.Value = "Urlaub" Then
Range("T12").Locked = True
Range("V14").Locked = True
Else
Range("T12").Locked = False
Range("V14").Locked = False
End If
ActiveSheet.Protect
End Sub
Wähle ich jetzt in der ComboBox111 Urlaub aus,
dann Werden die ComboBox1 und ComboBox2 geleert sowie ausgeblendet.
klicke ich jetzt in die Zelle T12 oder V14
so ist die Zelle geschützt.
soweit so gut.
Wähle ich jetzt in der ComboBox111 Arbeitstag aus,
dann werden die ComboBoxen wieder eingeblendet.
nun möchte ich über die ComboBox1 oder ComboBox2
einen Wert eingeben
jetzt bringt er mir immer noch die geschützt-Meldung und übernimmt den Wert.
erst wenn ich vorher in eine Zelle klicke
dann kann ich problemlos über die ComboBox1 oder ComboBox2 einen Wert eingeben.
Kann man in den Code irgend etwas reinschreiben,
damit bei Auswahl von Arbeitstag
in der ComboBox111
die Zellen T12 und V14 gleich freigegeben sind?
Du kannst mit activesheet.unprotect und activesheet.protect den Schutz per VBA aktivieren bzw. deaktivieren. Binde die beiden Befehle in Deine Combobox Prozedur ein.
Hallo Kidd0
danke für deine Hilfe
Kannst du mir sagen, was " _Enter() " bedeutet.
Soll ich diesen Code mit in das Arbeitsblatt einfügen.
oder in das ActiveSheet. ... einarbeiten?