Frage von Lotti23, 58

Kann mir jemand den Code geben um bei Excel die komplette Zeile zu verstecken, wenn in einer bestimmten Zelle der selben Zeile "ok" eingegeben wird?

Diese Funktion würde ich gerne übergreifend für alle Zeilen in dem Excel Dokument übernehmen. Falls verstecken nicht funktioniert, dann eben ausblenden.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Oubyi, Community-Experte für Excel, 36

Angenommen, mit "bestimmte Zelle" ist eine Zelle in Spalte H gemeint, dann:

Mach mal einen Rechtsklick auf den Tabellenreiter (unten, da wo z.B. Tabelle1 steht) und gehe dann auf "Code anzeigen...".
In das große Fenster des VBA-Editors, der sich dann öffnet kopierst Du folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim intSpalte As Integer
intSpalte = 8 'für Spalte H
If Target.Column = intSpalte Then
If Target.Value = "ok" Then
Target.EntireRow.Hidden = True
End If
End If
End Sub

Die Datei musst Du danach aber als .xlsm speichern, und Makros zulassen.

Teste mal genau.
Klappt es?

Kommentar von Lotti23 ,

Danke klappt super!!

Eine Frage hätte ich aber noch. Wenn ich die Spalte von H zu z.B. M wechseln will. Wie mach ich das denn dann? Ich habe die Variable H aus deinem Code ersetzt aber das hat nicht geklappt.

Kommentar von schmiddi1967 ,


intSpalte = 13



Kommentar von Oubyi ,

Wie schmiddi schon schreibt:
intSpalte = 13
Ich habe den Code aber auch nochmal etwa verändert, sodass man nicht mehr die Spalten abzählen muss.
(Allerdings kann man das auch mit der Formel: =Spalte() in einer Zelle von Excel erledigen lassen).

So kannst Du eine beliebige - komplette - Zelladresse aus der Spalte angeben, in der das ok gesetzt wird:


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngSpalte As Range
Set rngSpalte = Range("M1") 'für Spalte M
'Beliebige Zelladresse aus der Spalte angeben (M1,M15,M100..)
If Target.Column = rngSpalte.Column Then
If Target.Value = "ok" Then
Target.EntireRow.Hidden = True
End If
End If
End Sub


Besser so?

Kommentar von schmiddi1967 ,

Ich habe auch noch einen :))

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim lngZeile As Long
For lngZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Cells(lngZeile, 13) = ("ok") Then Rows(lngZeile).EntireRow.Hidden = True
Next lngZeile
End Sub
Kommentar von Oubyi ,

Danke fürs

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 22

Du könntest einen Autofilter mit Kriterium "(Leere)" auf die ok-Spalte über die Tabelle legen und nach der Eingabe von "ok" [Enter] drücken, gefolgt von [Strg]+[Alt]+L

Keine passende Antwort gefunden?

Fragen Sie die Community