Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Im Formular nur am Anfang suchen | Herbers Excel-Forum


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

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

  

Betrifft: AW: Im Formular nur am Anfang suchen von: Beverly
Geschrieben am: 27.01.2010 16:33:23

Hi Lutz,

verwende noch zusätzlich Left (ungetestet):

Left(LCase(Cells(lng, 2).Value), 2), Left(.TextBox2.Value), 2)


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 27.01.2010 16:43:31

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?



  

Betrifft: AW: Im Formular nur am Anfang suchen von: Beverly
Geschrieben am: 27.01.2010 17:12:43

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.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 27.01.2010 18:41:42

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


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Beverly
Geschrieben am: 27.01.2010 18:54:36

Hi Lutz,

schreibe die Zeile

frm_Daten.Show
vor die Zeile
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 27.01.2010 19:16:35

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


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Beverly
Geschrieben am: 27.01.2010 19:42:37

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.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 27.01.2010 21:09:48

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


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Beverly
Geschrieben am: 27.01.2010 21:57:58

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.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 27.01.2010 22:39:18

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


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Beverly
Geschrieben am: 28.01.2010 10:44:30

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


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 28.01.2010 11:06:23

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


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Hajo_Zi
Geschrieben am: 27.01.2010 16:35:54

Hallo Lutz,

siehe Dir das Beispiel an.
http://hajo-excel.de/chCounter3/getfile.php?id=250

GrußformelHomepage


  

Betrifft: AW: Im Formular nur am Anfang suchen von: Lutz
Geschrieben am: 27.01.2010 18:42:35

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


Beiträge aus den Excel-Beispielen zum Thema "Im Formular nur am Anfang suchen"