Zelle über VBA sperren

3 Antworten

Private Sub ComboBox111_Enter()
T12.locked = false
V14.locked = false
End Sub

Christian030 
Fragesteller
 24.10.2012, 16:08

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?

0
Kidd0  24.10.2012, 21:09
@Christian030

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.

0
Christian030 
Fragesteller
 25.10.2012, 08:19

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?

0
Kidd0  25.10.2012, 09:43
@Christian030

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. :)

0
Christian030 
Fragesteller
 29.10.2012, 11:04
@Kidd0

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
0
Kidd0  06.11.2012, 13:49
@Christian030
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.

0

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.