2016-04-06 6 views

Antwort

1

die Schritte, die die Verbindung verwendet haben und dann die Range („$ B $ 4: $ B $ 5000“) den folgenden Code ersetzen Abschnitte mit den tatsächlichen Daten, die Sie filtern möchten. Dies setzt auch voraus, dass Sie das Textfeld mit Zelle A1 verknüpfen.

Private Sub TextBox1_Change() 

ActiveSheet.Range("$B$4:$B$5000").AutoFilter Field:=1, Criteria1:="" & CStr(Excel.ActiveSheet.Range("A1").Value) & "" 

End Sub 

Zusätzlich können Sie alle Werte erhalten, die diese ganze Zahl in der Zahl enthalten und man kann die folgenden (obwohl deutlich langsamer)

Private Sub TextBox1_Change() 
Application.ScreenUpdating = False 
vCheck = CStr(Range("A1").Value) 
For Each vCell In Range("B5:B5000") 
vValue = CStr(vCell.Value) 
If Not CBool(InStr(1, vValue, vCheck, vbBinaryCompare)) Then 
hideRow = vCell.Row 
Rows(hideRow).Hidden = True 
Else 
hideRow = vCell.Row 
Rows(hideRow).Hidden = False 
End If 
Next vCell 
Application.ScreenUpdating = True 
End Sub 
+0

Works verwenden, wie erwartet, wenn Datenbereich in einer Spalte ist. Kann diese Lösung für Daten in mehreren Spalten mit nur einem Textfeld übernommen werden? – Rayearth

+0

Sie können dies tun, indem Sie eine einzelne Spalte mit einer if-Anweisung erstellen, die mehrere Spalten betrachtet und nach dieser kombinierten Spalte filtert. dh wenn A = 2 oder B = 2 Dann 1 Else 0 und filtere nur für Werte in Spalte C (die if-Anweisung), die den Wert 1 haben (dh die von dir eingestellte Bedingung erfüllen) – TsTeaTime

+0

Danke, ich werde es versuchen später. Sehr geschätzt. – Rayearth

Verwandte Themen