Excel VBA: Wie mach ich aus einem Textfeld ein Suchfeld?

5 Antworten

Das ist jetzt nicht so auf die schnelle zusammengeschustert.

Du willst da ja gleich mehrere Sachen auf einmal abhandeln. Zum einen erst mal die Suche. Dann sollen die Suchergebnisse als Listbox erscheinen und dann diese noch in ein Userform übertragen werden.

Die Frage ist ja auch, was denn da nun wo eingetragen werden soll?

Vor allem, da man weder die Tabelle(n) noch die Userform kennt, kann man da im Grunde gar nicht wirklich antworten.

Ohne den Aufbau deiner "Datenbank" zu kennen und ohne die Userform zu kennen ist das eigentlich nicht möglich.

dass egal in welchem Textfeld

welche Textfelder?

die entsprechende Spalte in Excel durchsucht wird

Was ist die "entsprechende Spalte"?

agent888  04.09.2017, 11:44

Er meint mit "egal in welchem", dass er einige Textfelder hat die einer Spalte zugeordnet sind. Egal in welchem davon er was eingibt, wird die jeweilige Spalte durchsucht. Klar ist das möglich...

0
augsburgchris  04.09.2017, 12:26
@agent888
Private Sub ComboBox1_Change()


'Suche Kundenname' Dim arr() As Variant, C As Variant Dim firstAddress As String Dim Y As Boolean Dim iRowU As Integer

If Len(ComboBox1.Value) > 2 Then With Worksheets("Kunden").Range("F1:F65536") Set C = .Find((ComboBox1.Value), LookIn:=xlValues) If Not C Is Nothing Then firstAddress = C.Address Y = True Do C.Interior.Pattern = xlPatternGray34 ReDim Preserve arr(1 To 8, 0 To iRowU) arr(1, iRowU) = .Cells(C.Row, 1) 'b iRowU = iRowU + 1 Set C = .FindNext(C) Loop While Not C Is Nothing And C.Address <> firstAddress End If End With

If Y = False Then MsgBox "kein Eintrag gefunden" Else ListBox1.Column = arr End If End If End Sub
0
augsburgchris  04.09.2017, 12:28
@augsburgchris

Hier Wählst du in Combobox1 aus und trägst in Listbox1 ein.

Die MatchEntry eigenschaft muss auf Complete stehen. 

0
Kate1218 
Fragesteller
 06.09.2017, 07:24
@augsburgchris

Hey, danke für die Hilfe. Wenn ich das richtig verstehe, müsste ich den Code jetzt nur auf meine Textbox umschreiben oder ? 

1

Ohje, habe mir das ganze wohl einfacher vorgestellt als gedacht. 

Ich habe ein Bild meiner Userform anbei gefügt. Vielleicht wird dann etwas deutlicher was meine Absichten sind. 

Vielen Dank schonmal für die schnellen Antworten! 

 - (Computer, Microsoft Excel, VBA)
agent888  04.09.2017, 12:25

Nun, um die Spaltennummer der jeweiligen Textbox festzulegen (also welche Spalte sie darstellt und welche danach durchsucht werden soll) kannst du die "Tag"-Eigenschaft der input-box nutzen. Dort schreibst du einfach die Spaltennummer rein. Der Rest wie gesagt: Autofilter und mit SpecialCells alles rausholen was angezeigt wird. Mach einfach mal das mit dem Autofilter, danach kann ich dir konkret weiterhelfen. Falls du Probleme hast schreib es hier drunter als Kommentar.

0

Du kannst das change-Event bei dem Textfeld verwenden und mit Autofilter immer die Daten im Tabellenblatt filtern. Dann kannst du mit SpecialCells alle die Zellen herausholen die sichtbar sind (also wo der Filter zutraf) und diese dann in der Listbox anzeigen. Du musst dich ein bisschen dazu einlesen, ich habe momentan nicht Zeit, die ganze Sache zu schreiben, ich helfe dir aber gerne bei kleineren Problemen.

VBA ist schön, nervig aber schön. Excel ist kein Platz für eine Datenbank, dafür gibt es viel bessere Programme, selbst ACCESS von Microsoft ist besser. Ansonsten MySql - wobei dies eher in der Webentwicklung angewendet wird.