Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Im Formular nur am Anfang suchen | Herbers Excel-Forum

Im Formular nur am Anfang suchen
27.01.2010 16:19:59
Lutz

Hallo Excel Experten,
ich habe für ein Kunden-Suchformular einen Suchcode:

Sub SucheName()
Dim lng As Long
Dim i As Integer
Application.ScreenUpdating = False
With frm_Daten
.ListBox1.Clear
Sheets("Kunden").Activate
i = 0
For lng = 2 To ActiveSheet.UsedRange.Rows.Count
If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox2.Value)) > 0 Then
.ListBox1.AddItem Cells(lng, 1).Value
.ListBox1.Column(1, i) = Cells(lng, 2).Value
.ListBox1.Column(2, i) = Cells(lng, 3).Value
.ListBox1.Column(3, i) = Cells(lng, 4).Value
.ListBox1.Column(4, i) = Cells(lng, 5).Value
.ListBox1.Column(5, i) = Cells(lng, 6).Value
.ListBox1.Column(6, i) = Cells(lng, 7).Value
.ListBox1.Column(7, i) = Cells(lng, 8).Row
i = i + 1
Else
End If
Next lng
End With
Application.ScreenUpdating = True
End Sub
Nun sucht der Code aber im gesamten Feld nach dem Suchtext. Er soll aber nur bei den beiden Anfangsbuchstaben suchen - wie muß man den Instr - Code ändern?
Vielen Dank für Eure Hilfe
Gruß Lutz

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Im Formular nur am Anfang suchen
27.01.2010 16:33:23
Beverly
Hi Lutz,
verwende noch zusätzlich Left (ungetestet):
Left(LCase(Cells(lng, 2).Value), 2), Left(.TextBox2.Value), 2)


AW: Im Formular nur am Anfang suchen
27.01.2010 16:43:31
Lutz
Hallo Beverly,
vielen Dank, ist bestimmt richtig aber wenn ich davor if und danach das > 0 then setze dann geht das nicht.
Wodurch muß diese Zeile erstetzt werden:
If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox2.Value)) > 0 Then
Vielen Dank für Deine Hilfe
Gruß Lutz
P.S. Du bist doch sehr fit in solchen Dingen:
Ich rufe im Moment so auf:
Sub DialogAnzeigen()
frm_Daten.Show
End Sub
Kann ich einfach das Makro
SucheName vor End

Sub einfügen und er führt gleich dieses Makro aus?

Anzeige
AW: Im Formular nur am Anfang suchen
27.01.2010 17:12:43
Beverly
Hi Lutz,
du musst natürlich noch das Instr darum herum setzen. Die Zeile würde dann so aussehen:
If InStr(Left(LCase(Cells(lng, 2).Value), 2), Left(.TextBox2.Value), 2)) > 0 Then
Das Makro willst du doch sicher ausführen wenn das UserForm bereits geöffnet ist - oder? Dann müsstest du z.B. dort einen Schalter erstellen und den Code aus dem Makro dort reinschreiben.


AW: Im Formular nur am Anfang suchen
27.01.2010 18:41:42
Lutz
Hallo Beverly,
vielen Dank, klappt wie verrückt.
Das Formular aufrufen und die Suche soll eigentlich in einem gehen:
Sub DialogAnzeigenSpez()
frm_Daten.Show
Dim lng As Long
Dim i As Integer
Application.ScreenUpdating = False
With frm_Daten
.ListBox1.Clear
Sheets("Kunden").Activate
i = 0
For lng = 2 To ActiveSheet.UsedRange.Rows.Count
'If Left(LCase(Cells(lng, 2).Value), 2, Left(.TextBox2.Value), 2) > 0 Then
If InStr(Left(LCase(Cells(lng, 2).Value), 2), Left((.TextBox2.Value), 2)) > 0 Then
'If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox2.Value)) > 0 Then
.ListBox1.AddItem Cells(lng, 1).Value
.ListBox1.Column(1, i) = Cells(lng, 2).Value
.ListBox1.Column(2, i) = Cells(lng, 3).Value
.ListBox1.Column(3, i) = Cells(lng, 4).Value
.ListBox1.Column(4, i) = Cells(lng, 5).Value
.ListBox1.Column(5, i) = Cells(lng, 6).Value
.ListBox1.Column(6, i) = Cells(lng, 7).Value
.ListBox1.Column(7, i) = Cells(lng, 8).Row
i = i + 1
Else
End If
Next lng
End With
Application.ScreenUpdating = True
End Sub
Geht es aber nicht.
Ziel des ganzen: ich schreibe in eine Zelle die Anfangsbuchtaben, die werden gleich in das Formular geschrieben und es soll gleich mit diesem Inhalt lossuchen...
Also 2 Buchtsaben in eine Zelle, ein Click und das Formular öffnet sich mit den gefundenen Einträgen.
Was muß ich da noch ändern?
Vielen Dank Gruß Lutz
Anzeige
AW: Im Formular nur am Anfang suchen
27.01.2010 18:54:36
Beverly
Hi Lutz,
schreibe die Zeile
frm_Daten.Show
vor die Zeile
End Sub


AW: Im Formular nur am Anfang suchen
27.01.2010 19:16:35
Lutz
Hallo Beverly,
er zeigt mir zwar die Eingabe aus der Zelle im Formular an aber er hat das Filtern danach (erster Teil des Makros vor frm_Daten.Show) nicht ausgeführt.
Die Frage ist, ob man eine Form aufrufen kann und dann gleich das Makro loslaufen lassen kann? Oder kann man wenigstens einen CommandButton gleich aktivieren lassen?
Vielen Dank Gruß Lutz
Anzeige
AW: Im Formular nur am Anfang suchen
27.01.2010 19:42:37
Beverly
Hi Lutz,
ich kenne deine Arbeitsmappe nicht und kann deshalb nicht testen, ob meine Vorschläge das machen was du dir vorstellst.
Schreibe den Code ins UserFom_Activate Ereignis.


AW: Im Formular nur am Anfang suchen
27.01.2010 21:09:48
Lutz
Hallo Beverly,
ich habe mal diverses getestet:
Sub DialogAnzeigenSpez()
frm_Daten.Show
'frm_Daten.CommandButton7 = True
'frm_Daten.CommandButton7_Click
'CommandButton7.Activate
'frm_Daten.CommandButton7.Activate
'CommandButton7 = True
'CommandButton7_Click
'frm_Daten.CommandButton7 = True
'Run Macro:="SucheNameSpez"
End Sub
Das einzige was geht ist das erste nach frm_Daten.Show
Aber er tut nichts.
Das Makro soll die Form öffnen und das Makro "SucheNameSpez" ausführen - das liegt beim CommandButton7. Manuell geht es auch: ich rufe es auf und clicke dann auf den CommandButton7 und ich bekomme die gefilterten Listen. Es geht also "nur" darum dem Makro beizubringen, das es den CommandButton7 aktiviert/ausführt.
Das muß doch zu machen sein?
Das ganze lege ich dann noch hinter eine Zellüberwachung der Suchtextzelle.
D.h. alt: Eingabe, Form aufrufen (mit Botton im Tabellenblatt), dann CommandButton7 anclicken.
Ziel neu: Zelle ändern und gefilterte Liste erscheint
Liebe Grüße Lutz
Anzeige
AW: Im Formular nur am Anfang suchen
27.01.2010 21:57:58
Beverly
Hi Lutz,
ehe wir hier wie die Katze um den heißen Brei reden wäre es besser wenn du deine Arbeitsmappe mal hochladen würdest.


AW: Im Formular nur am Anfang suchen
27.01.2010 22:39:18
Lutz
Hallo Beverly,
anbei mal die Mappe. https://www.herber.de/bbs/user/67567.xls
Wenn du in Eingabe in der Zelle E2 etwas änderst, ruft er automatisch auf.
Wenn Du br eingibst sollten beim linken fernglas 2 Namen auftauchen (commandButton7) und bei dem rechten 3.
Der eine sucht nur die ersten 3 Buchstaben durch, der andere alles.
Ich wollte ungern 2 Formulare machen (aber wenn es nicht anders geht...).
Gruß und tausend Dank
Lutz
Anzeige
AW: Im Formular nur am Anfang suchen
28.01.2010 10:44:30
Beverly
Hi Lutz,
ich habe den Code in den Prozeduren SucheName, SucheNameSpez und im Worksheet_Change Ereignis geändert. Um den restlichen Code habe ich mich nicht gekümmert.
https://www.herber.de/bbs/user/67578.xls


AW: Im Formular nur am Anfang suchen
28.01.2010 11:06:23
Lutz
Hallo Beverly,
wunderbar das geht genau so wie ich mir das gedacht (und nicht hinbekommen) habe.
Du hast den Code bei SucheNameSpez auch verbessert (ohne select...). Werde mir das mal für die anderen suchfunktionen mal abgucken.
Vielen, vielen Dank, das hat mir sehr geholfen und spart mir eine Menge arbeit.
Wie das immer so ist, hätte ich noch eine Frage: kann man eigentlich den Inhalt der Listbox Alphabetisch nach dem Namen sortieren lassen?
In jedem Fall schon mal vielen Dank und noch einen schönen Tag.
Viele Grüße
Lutz
Anzeige
AW: Im Formular nur am Anfang suchen
27.01.2010 18:42:35
Lutz
Hallo Hajo,
vielen Dank, Beverly hatte was geschrieben - das klappt wie verrückt.
Das Formular aufrufen und die Suche soll eigentlich in einem gehen:
Sub DialogAnzeigenSpez()
frm_Daten.Show
Dim lng As Long
Dim i As Integer
Application.ScreenUpdating = False
With frm_Daten
.ListBox1.Clear
Sheets("Kunden").Activate
i = 0
For lng = 2 To ActiveSheet.UsedRange.Rows.Count
'If Left(LCase(Cells(lng, 2).Value), 2, Left(.TextBox2.Value), 2) > 0 Then
If InStr(Left(LCase(Cells(lng, 2).Value), 2), Left((.TextBox2.Value), 2)) > 0 Then
'If InStr(LCase(Cells(lng, 2).Value), LCase(.TextBox2.Value)) > 0 Then
.ListBox1.AddItem Cells(lng, 1).Value
.ListBox1.Column(1, i) = Cells(lng, 2).Value
.ListBox1.Column(2, i) = Cells(lng, 3).Value
.ListBox1.Column(3, i) = Cells(lng, 4).Value
.ListBox1.Column(4, i) = Cells(lng, 5).Value
.ListBox1.Column(5, i) = Cells(lng, 6).Value
.ListBox1.Column(6, i) = Cells(lng, 7).Value
.ListBox1.Column(7, i) = Cells(lng, 8).Row
i = i + 1
Else
End If
Next lng
End With
Application.ScreenUpdating = True
End Sub
Geht es aber nicht.
Ziel des ganzen: ich schreibe in eine Zelle die Anfangsbuchtaben, die werden gleich in das Formular geschrieben und es soll gleich mit diesem Inhalt lossuchen...
Also 2 Buchtsaben in eine Zelle, ein Click und das Formular öffnet sich mit den gefundenen Einträgen.
Was muß ich da noch ändern?
Vielen Dank Gruß Lutz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige