Excel Zeile Sperren wenn Bedingung für eine Spalte erfüllt ist wie macht man das?
Hey Leute, wie kann man mit VBA Zeilen sperren wenn die Bedingungen für eine Spalte erfüllt ist. Ich möchte, dass sich die Zeile sperrt und man sie nicht mehr bearbeiten kann, wenn eine Spalte den erforderlichen Wert erfüllt.
Die Spalte G trägt den Titel abgeschlossen und wird entweder mit ja oder nein ausgefüllt, wenn ja steht soll sich die gesamte Zeile, wo dieses ja in Spalte G steht sperren und man kann sie nicht mehr bearbeiten.
Danke für eure Hilfe
1 Antwort
Private Sub Worksheet_Change(ByVal Target As Range)
Unprotect
Target.EntireRow.Locked = (Target.Value = "ja")
Protect
End Sub
Achtung! Ist einmal eine Zeile als abgeschlossen gekennzeichnet worden, kann auch die Spalte mit Abgeschlossen=ja nicht mehr editiert werden.
PS: Eventuell solltest du noch Target auf eine Spalte einschränken (if Target.Colum = ...)
Musst du klammern:
if (Target.Column = 4) or (Target.Column = 6) or (Target.Column = 7) then
...
End if
es zeigt mir zwar keine Fehlermeldung an aber es funtioniert auch nicht
Private Sub cmdfilteri_Click()
Range("A1:v1").AutoFilter Field:=7, Criteria1:="Nein"
Range("A1:v1").AutoFilter Field:=6, Criteria1:="Ja"
End Sub
Private Sub cmdSchließen_Click()
Unload frmhi
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Unprotect
Target.EntireRow.Locked = (Target.Value = "ja")
Protect
If (Target.Column = 7) Then
End If
End Sub
Keine Ahnung warum das nicht klappt die Filter funktionieren prima
Ach der Filter-Mensch. :D
Du hast einen Leerzweig erzweugt. Der If-Zweig ist körperlos. Ich meinte das so:
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 7) Then
Unprotect
Target.EntireRow.Locked = (Target.Value = "ja")
Protect
End If
End Sub
Du musst das Makro natürlich ins Worksheet im VBA-Editor anlegen.
wie meinst du das du musst wissen programmieren ist wirklich nicht mein Fachgebiet ... Kannst du mir das bitte etwas genauer erklären ?
Du musst im VBA-Editor auf die Tabelle, auf die das Makro wirken soll, doppelklicken. Dort muss der Code rein. Es handelt sich um ein Event / Ereignis, welches nur auf diesem Tabellenblatt gültig ist. Die Mappe speicherst du am besten als .xlsm.
Danke jetzt hats geklappt, tut mir leid ich wieß dass ich nerve ich hab jetzt noch ne frage und zwar ,
Private Sub UserForm_Initialize()
With Me.txtDatum.Value = Date
Dim r As Range
With Worksheets("Daten")
Set r = .Range("B1", .Range("B65536").End(xlUp))
ComboBox1.RowSource = "Daten!" & r.Address
End With
End With
End Sub
Ist es möglich, dass die combobox all jene Daten herausfiltert wo, in Spalte G nein steht? Also praktisch dass es mir nurmehr jene Daten aus Spalte B in der Combobox anzeigt wo in der gleichen Zeile in Spalte G ein nein steht ? Danke für deine Geduld aber das ist nur ein Sommerjob und ich besuche ein Gymnasium, wo kein Informatik unterrichtet geschweige denn viel mit Computer gearbeitet wird.
Gilt das ja nur für diese spalte oder auch für andere weil es sind in dieser tabelle 3 wo entweder ja oder nein eingesetzt wird.