Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Suchbereich ändern
#1
Hallo

Was muss im Code geändert werden, damit nicht in der ersten Spalte / A2..., sondern in der dritten Spalte / C2.... gesucht wird?

Code:
Private Sub TextBox1_Change()
Dim i As Long
Me.TextBox1 = Format(StrConv(Me.TextBox1, vbLowerCase))
Me.ListBox1.Clear
For i = 2 To Tabelle1.Range("A1000000").End(xlUp).Row
For X = 1 To Len(Tabelle1.Cells(i, 1))
a = Me.TextBox1.TextLength
If LCase(Mid(Tabelle1.Cells(i, 1), X, a)) = Me.TextBox1 And Me.TextBox1 <> "" Then
Me.ListBox1.AddItem Tabelle1.Cells(i, 1)
Me.ListBox1.List(ListBox1.ListCount - 1, 1) = "0" & Tabelle1.Cells(i, 2)
End If
Next X
Next i
End Sub

LG Jana
Antwortento top
#2
Hallöchen,

die Zelladressierung lauten Cells(Zeile, Spalte). C wäre dann 3...
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#3
Moin und huihuihui!

Bei jedem Tastenanschlag eine Schleife über Zellen laufen zu lassen und per .AddItem-Methode einer ListBox zuzuweisen, ist das Gegenteil von sportlich.
Man entdeckt nämlich die Meditation der Langsamkeit …

Ich bin da ganz bei shift-del aus dem anderen Thread:
Du willst ein umfangreiches Userform programmieren, hast dazu aber nicht die erforderlichen Kenntnisse, um die zahlreichen Fallstricke zu umgehen.

Damit Du aber nicht meinst, dass ich nur zum meckern hier bin:
Nutze die .List-Eigenschaft der Listbox und bediene Dich der VBA.Filter-Funktion!
Code:
ListBox1.List = Filter(Split("Heinz Mainz keins"), "nz")
ergibt (blitzschnell)
Heinz
Mainz

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Benutzer sagt Danke an RPP63 für diesen Beitrag:
  • schauan
Antwortento top
#4
Hallo Ralf,

das mit der Filterfunktion in VBA hatte ich schon mal gesehen, aber nie richtig genutzt.

Ich war jetzt mal so frech und habe sie im anderen Beitrag von Jana genutzt, und zwar doch im Change Ereignis einer Textbox.
Mal schauen, wie sich das insgesamt auf die Performance auswirkt, das habe ich noch nicht getestet.

Danke auch von mir für das Beispiel.
Gruß Atilla
Antwortento top
#5
Ich habe es gesehen, attila!
Die Performance dürfte besser sein als mit Range.Find zu arbeiten.

Zwei Anmerkungen:
Wenn ich per .List zuweise, brauche ich nicht vorher die .Clear-Methode anwenden.
Deine Variablen dienen wohl eher der Übersichtlichkeit, sie sind aber nicht notwendig.
In Deinem Beispiel reicht ein Einzeiler:
Private Sub TextBox1_Change()
If Len(TextBox1.Text) Then _
  ListBox1.List = Filter(Application.Transpose(Sheets(ComboBox_Suchauswahl.Text).Columns("C").Value), TextBox1)
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antwortento top
#6
Hallo Ralf,

Danke für Deine Anmerkungen.

Mit Clear hatte ich nachträglich rein genommen, weil aus irgendeinem Grunde die Liste bestehen blieb, obwohl keine Filterergebnisse vorlagen.
Das konnte ich jetzt aber nicht mehr nachstellen, also kommt es weg.

Dann wollte ich auch so einen Einzeiler, wie Du, aber warum auch immer, ich habe es nicht hinbekommen.
Ob ich Value weggelassen hatte oder was auch immer. Dann bin ich den etwas umständlichen doppelt gemoppelten Weg gegangen.

Hätte ich den Einzeiler hinbekommen, hätte ich den genommen. Blush
Gruß Atilla
Antwortento top
#7
Hallo atilla,

eventuell in der Art:

arrA = Filter(WorksheetFunction.Transpose(Range("A1:A10").Value), "aal")
bzw. direkt entsprechend Hinweis von Ralf
Listbox1.List = Filter(WorksheetFunction.Transpose(Range("A1:A7").Value), "aal")

wobei der Filter Groß- und Kleinschreibung differenziert.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#8
Hallo Andre,

danke für die Hilfe, aber das ist mit Ralfs Einzeiler schon erklärt worden und ich konnte es schon Erfolgreich einsetzen.
Gruß Atilla
Antwortento top
#9
(01.03.2020, 08:43)RPP63 schrieb: Nutze die .List-Eigenschaft der Listbox und bediene Dich der VBA.Filter-Funktion!
Code:
ListBox1.List = Filter(Split("Heinz Mainz keins"), "nz")
ergibt (blitzschnell)
Heinz
Mainz

Hallo Ralf,
wie soll ich das umsetzen, wenn ich den Inhalt (in deinem Beispiel hinter Split: Heinz, Mainz, keins) "nicht kenne"?
Es sind etwa 7500 Zeilen und teilweise 80 Zeichen in der Zelle. Ich kann da schwer alle Möglichkeiten zusammenfassen in einer Formel.
Zudem wird sich die Liste erweitern.

Mache ich einen Denkfehler? Eventuell habe ich auch nicht verstanden, was du mir mit dem Beispiel oben erklären möchtest.

Kann "Heinz Mainz keins" auch ein Inhalt einer Spalte auf einem Tabellenblatt bzw. eine Tabelle auf einem Tabellenblatt sein?
Kann "nz" auch der Inhalt einer Textbox (der Suchtext) sein?


LG Jana
Antwortento top
#10
Das hatte ich doch in #5 beantwortet, Jana!
(und Attila im Nachbarthread umgesetzt)

Gruß Ralf

Nachtrag:
Nimm es bitte nicht persönlich, aber ich bin der Meinung, dass Du Dich mit diesem Projekt übernimmst.
Nutze doch zunächst die umfangreichen Möglichkeiten, die Dir "plain Excel" bietet.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste