Excel Zeile Sperren wenn Bedingung für eine Spalte erfüllt ist wie macht man das?

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


Christlwenter 
Beitragsersteller
 04.08.2014, 15:45

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.

Suboptimierer  04.08.2014, 16:01
@Christlwenter

Musst du klammern:

if (Target.Column = 4) or (Target.Column = 6) or (Target.Column = 7) then
  ...
End if
Christlwenter 
Beitragsersteller
 04.08.2014, 16:07
@Suboptimierer

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

Suboptimierer  04.08.2014, 16:12
@Christlwenter

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.

Christlwenter 
Beitragsersteller
 05.08.2014, 13:26
@Suboptimierer

wie meinst du das du musst wissen programmieren ist wirklich nicht mein Fachgebiet ... Kannst du mir das bitte etwas genauer erklären ?

Suboptimierer  05.08.2014, 14:58
@Christlwenter

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.

Christlwenter 
Beitragsersteller
 05.08.2014, 16:59
@Suboptimierer

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.