2016-08-08 28 views
0

Ich habe mehrere Antworten auf ähnliche Fragen gefunden, aber ich kann diese Arbeit für das Leben von mir nicht machen. Ich versuche, Zeilen basierend auf einer Eingabe in einer Zelle automatisch auszublenden. Ich habe Daten in den Spalten A bis J, und ich möchte alle Zeilen automatisch ausblenden, in denen ich einen Wert in Spalte K eingegeben habe. Ich bin mir sicher, dass dies getan werden kann, aber ich bin am Ende meines Wissens versucht, die VBA-Makros zu arbeiten!Autohände Zeilen in Excel basierend auf Bedingung

Jede Hilfe würde sehr geschätzt werden.

Danke!

+1

Bitte posten, was Sie bisher versucht haben, und was genau ist fehlgeschlagen, wenn Sie diesen Ansatz versucht . – Mikegrann

+0

@Matt Marshal ... Ich habe unten eine Antwort gepostet, aber was Mikegran Ihnen sagt und Ihnen zugestanden hat, dass Sie ein Neuling sind, ist, dass Sie den Code posten sollten, den Sie ausprobiert haben und der nicht funktioniert oder schwer ist jemand hier, um dir zu helfen. – dinotom

+0

Entschuldigung. Ich habe mehrere Artikel ausprobiert, die ich gefunden habe, indem ich StackOverflow und einige andere gesucht habe. Keiner von ihnen schien zu funktionieren, also habe ich alles gelöscht und beschlossen, frisch zu beginnen. Ich werde sicherstellen, dass ich ab jetzt speichern, was ich mache, damit ich es posten kann. Danke! –

Antwort

2

Alles, was Sie brauchen, ist ein Arbeitsblattänderungsereignis in Ihrem Blatt. Setzen Sie diesen Code im Code-Abschnitt Ihres Blattes

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 11 Then ' Column K is column number 11 
     Target.EntireRow.Hidden = True 
    End If 
End Sub 

Wenn Sie den Wert in jeder Zelle in der Spalte k ändern wird es die gesamte Zeile verbergen.
Wenn Sie nur wollen, dass es in UsedRange funktioniert, können Sie den Code so bearbeiten, dass er auch so funktioniert.

+0

Was passiert, wenn der Benutzer die Löschtaste drückt? Wird sich die Reihe immer noch nicht verstecken? – Davesexcel

+0

Das OP sagte, er wollte etwas in die Zelle eingegeben werden, nicht die Lösch-Taste gedrückt werden. – dinotom

+0

Danke! Das hat funktioniert! –

0

Versuchen Sie dies. Es durchläuft jede Zelle in Spalte K und verbirgt Zellen mit beliebigem Text.

Sub AutoHideRows() 
'Get the last row of the used range 
    Dim LastRow As Long 
    LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row 

'Loop through the range looking for non-blank values, and hide those rows 
    Dim c As Range 
    For Each c In Range("K1:K" & LastRow) 
     If c.Value <> "" Then 
      c.EntireRow.Hidden = True 
      Else 
      c.EntireRow.Hidden = False 
     End If 
    Next c 
End Sub 

Wenn Ihre erste Reihe von Daten auf einen Spaltenkopf enthält und Sie wollen es aus dem Filter ausschließen, diese Codezeile ändern:

For Each c In Range("K1:K" & LastRow) 

dazu:

For Each c In Range("K2:K" & LastRow) 

Hoffe das hilft!

+0

Hallo, Danke für die Antwort. Ich habe das ausprobiert und es passiert nichts, wenn ich einen Wert (alphanumerisch oder numerisch) in eine Zelle in Spalte K setze. Gibt es noch etwas anderes, was ich tun muss? –

+0

Ihr Beispiel könnte 'specialcells' statt einer Schleife verwenden,' Range ("K2: K" & lastrow) .SpecialCells (xlCellTypeConstants, 23) .EntireRow.Hidden = 1' – Davesexcel

0

Hier ist eine Variation der Antwort von @dinotom. Es verbirgt sich die gesamte Zeile, wenn Sie einen Wert in Spalte K eingeben, aber nicht, wenn Sie einen Wert aus Spalte K. löschen

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Column = 11 And Target.Value <> "" Then ' Column K is column number 11 
     Target.EntireRow.Hidden = True 
    End If 
End Sub