Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
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
In Userform Suchfunktion für 2 Textboxen
07.09.2020 12:58:32
Michael
Hallo liebe Forum Mitglieder,
Ich habe eine Userform, in der ich Textbausteine entweder nach Angabe der Artikelnummer in Textbox1
oder nach Angabe Suchbegriff einen Textbaustein suche und mir in Textbox3 anzeigen lassen möchte.
Nach Kundennummer kann ich mir schon einmal die Textbox1 und 2 Füllen lassen.
jetzt möchte ich aber gerne die Wahl haben, das ich den Textbaustein finde, wenn ich entweder nur die Artikelnummer angebe oder in Textbox2 den Suchbegriff und die Textbox3 wird gefüllt.
Gibt es für Textbox3 eine andere Möglichkeit einen Text formatiert anzeigen zu lassen?
Die Textbox3 lässt ja nur 1 Zeile zu?
Der Code für Textbox1 sieht bei mir so aus:
Private Sub TextBox1_AfterUpdate()
Dim lZeile As Long
TextBox2 = ""
TextBox3 = ""
Dim RaFound As Range
Set RaFound = Worksheets("Tabelle1").Columns(1).Find(TextBox1, , , xlPart, , xlNext)
If Not RaFound Is Nothing Then
lZeile = RaFound.Row
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
End If
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
07.09.2020 13:12:40
Michael
Hallo...ich habe noch etwas vergessen.
In der Tabelle1, kann es später auch Einträge geben, wo es keine Artikelnummer gibt.
Hier brauche ich deswegen die Möglichkeit den Textbaustein auch nach Eingabe des Suchbegriffes zu finden.
Gruß
Michael
Ich war so frei...Auf offen gestellt! (owT)
07.09.2020 13:17:17
Pierre
AW: Ich war so frei...Auf offen gestellt! (owT)
07.09.2020 13:30:28
Michael
Danke :)
AW: In Userform Suchfunktion für 2 Textboxen
07.09.2020 15:39:24
Matthias
Moin!
Habe mir deine Datei grad nicht anschauen können. Theoretisch könnte es aber so gehen. Dabei bei Textbox2 (txtrange) bitte noch die Spalte beim Columns anpassen.
So wird erst die Nummer gesucht und dann der Text. Danach wird ausgewertet, was gefunden wurde. Gibt es eine Nummer wir die Zeile genommen. Wenn nicht wird auf Text geprüft.
Private Sub TextBox1_AfterUpdate2()
Dim lZeile As Long
textbox2 = ""
TextBox3 = ""
Dim RaFound As Range
Dim nrfound As Range
Dim txtfound As Range
Set nrfound = Worksheets("Tabelle1").Columns(1).Find(textbox1, , , xlPart, , xlNext)
Set nrfound = Worksheets("Tabelle1").Columns(1).Find(textbox2, , , xlPart, , xlNext)     _
'Spalte anpassen
If Not nrfound Is Nothing And Trim(textbox1)  "" Then
Set RaFound = nrfound
Else
If Not txtfound Is Nothing And Trim(textbox2)  "" Then Set RaFound = txtfound
End If
If Not RaFound Is Nothing Then
lZeile = RaFound.Row
textbox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
textbox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
End If
End Sub

Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
07.09.2020 15:57:00
Michael
Hallo Matthias,
habe deinen Code mal eingebaut.
(txtrange) die Spalte anpassen...in welcher Zeile des Codes meinst du?
Habe den Code ohne Angabe dieser Spalte ausprobiert....so bleiben die Textboxen leer, wenn ich eine
Artikelnummer eingebe?
Vielleicht versuchst du doch einmal meine Mappe? :)
Gruß
Michael
AW: In Userform Suchfunktion für 2 Textboxen
08.09.2020 13:32:09
Matthias
Moin!
Jetzt mal mit Datei getestet. Gib deinem Suchbutton mal folgenden Code:
Private Sub CommandButton1_Click()
Dim lZeile As Long
TextBox3 = ""
Dim RaFound As Range
Dim nrfound As Range
Dim txtfound As Range
Set nrfound = Worksheets("Tabelle1").Columns(1).Find(TextBox1, , , xlPart, , xlNext)
Set txtfound = Worksheets("Tabelle1").Columns(2).Find(TextBox2, , , xlPart, , xlNext)  _
_
'Spalte anpassen
If Not nrfound Is Nothing And Trim(TextBox1)  "" Then
Set RaFound = nrfound
Else
If Not txtfound Is Nothing And Trim(TextBox2)  "" Then Set RaFound = txtfound
End If
If Not RaFound Is Nothing Then
lZeile = RaFound.Row
TextBox1 = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
TextBox2 = Tabelle1.Cells(lZeile, 2).Value
TextBox3 = Tabelle1.Cells(lZeile, 3).Value
End If
End Sub

Im Code von gestern waren noch 2 Fehler. Das mit der Spalte bezog such auf coumns(2). Der Code sucht den Inhalt der beiden Textboxen (1 und 2) in den entsprechenden Spalten. Danach vergleicht er. Bei dem Code hat eine Nummer Vorrang. Wenn du also Nummer und Text in die Boxen eingibst, schaut er erst, ob er eine Nr findet und wenn nix passt, ob er einen Text findet.
Noch ein paar Hinweise:
Da du aber nur auf xlpart suchst, wäre es ggf. besser, die TxtBox3 in eine Listbox umzuwandeln und so auch mehrere Treffer zu finden. Wenn du zB Schrauben für Holz und Metall hast und nur nach Schrauben 60 suchst, wird dir nur der erste Treffer angezeigt. Kann ja aber auch sein, dass dein Treffer erst der zweite wäre.
Auch aus diesem Grund, würde ich die Suche beim Updaten der Boxen entfernen und nur mit dem Suchbutton arbeiten lassen. Insb. da sich die Boxen gegenseitig überschreiben können. Wenn das aber so gewünscht ist, kann man den Code oben auch in ein afterupdate umwandeln.
VG
Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
08.09.2020 15:23:07
Michael
Hallo Matthias,
danke für deine Erklärung.
Also die Textbox3 ändern in Listbox wäre ganz gut....kann Sie Textformate beliebig annehmen?
Da der Textbaustein unterschiedlich im Format aufgebaut sein kann.
Die Textbox lässt ja nur eine Zeile zu.
Wie müsste dann die Listbox in diesem Code eingesetzt werden.
Gruß
Michael
AW: In Userform Suchfunktion für 2 Textboxen
08.09.2020 18:26:11
Matthias
Moin!
Was heißt den verschiedene Textformate (fett, kursiv schriftarten ? - bitte mal erklären)? Also bei einer Listbox geht nur eine Zeile, pro Eintrag. Dafür könntest du aber verschiedene Treffer auflisten un auch gezielt ansprechen.Das geht bei einer Textbox nicht. Bei einer Textbox könnte man auch mehrere Zeilen nutzen. Schaue dir da mal die EIgenschaft Multiline der textbox an. Formate kann man auch verschiedene nutzen. Allerdings geht da nur ein Treffer (wenn man den Code einfach halten will).
Wenn du was zu den Formaten geschrieben hast, würde ich es mal dahingehend anpassen.
VG
Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
08.09.2020 18:56:39
Michael
Hallo,
Mit Formaten meine ich eigentlich nur Zeilensprünge und Absätze z. B. so:
bbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
nnnnnnn. bbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbb, bbbbbbbbbbbbbb.
bbbbbbbbbbb
bbbbbbbbbbb
Jetzt stell dir das einen Textabschnitt vor ;)
Aber wie ich das für die Textboxen realisieren soll...keine Ahnung.
Ich habe deinen letzten Code eingefügt.....nach Artiklenummereingabe klappt es.
Gebe ich keine Nummer ein, nur den Suchbegriff, geht es nicht
Gruß
Michael
Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
08.09.2020 21:15:03
Matthias
Moin!
Hier mal die Datei zurück. Ich habe in deine Userform mal meinen Code gepackt. M.E. funktioniert er da.
Dann habe ich dir mal noch eine mögliche Alternative reingepackt. Da gibt es jetzt noch eine LIstbox. Die zeigt dir alle Treffer an. Wenn es nur einen gibt, wird er gleich in TB 3 eingetragen. Wenn nicht einfach in der LIste anklicken. In der TB3 ist jetzt auch Multiline möglich.
https://www.herber.de/bbs/user/140135.xlsm
VG
AW: In Userform Suchfunktion für 2 Textboxen
09.09.2020 12:57:18
Michael
Hallo Matthias,
die zweite Lösung mit der Listbox finde ich gut
Aber wenn ich dort nur die Artikelnummer eingebe, bleibt die Form hängen.
Gebe ich Suchbegriff allein ein geht es
Wenn ich einen Datensatz ohne Artikelnummer anlege, kann ich dann auch diesen Datensatz
mit der Alternativform suchen?
Es gibt auch Textbausteine, die sich auf keine Artikelnummer beziehen.
Gruß
Michael
Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
09.09.2020 21:08:05
Matthias
Moin!
Upps, hatte gestern nur mit dem Text getestet. Anscheinend klappt meine Idee mit zwei Suchanfragen nicht. Deshalb hier eine andere Möglichkeit. Den Code an Stelle des alten Codes beim Suchbutton hinterlegen. Damit klappt es jetzt bei Artikelnummer und bei Texten. Zudem kannst du auch beides eingeben (bspw 261 bei Nummer und PE bei Suchbegriff). Das hilft, wenn du von beiden Werten nur Teile kennst und es dadurch noch mehr einschränken willst.
Private Sub CommandButton1_Click()
Dim anzahl As Long
Dim daten
Dim zeile As Long, status As Long
Dim eintragen As Boolean
TextBox3 = ""
Me.ListBox1.Clear
status = 0
anzahl = Worksheets(1).Cells(Worksheets(1).Rows.Count, 3).End(xlUp).Row
daten = Worksheets(1).Cells(1, 1).Resize(anzahl, 2)
If Trim(TextBox1)  "" And Trim(TextBox2)  "" Then
status = 1
ElseIf Trim(TextBox1)  "" Then
status = 2
ElseIf Trim(TextBox2)  "" Then
status = 3
End If
If status = 0 Then Exit Sub
For zeile = 2 To anzahl
eintragen = False
If status = 1 Then
If InStr(1, daten(zeile, 1), TextBox1, vbTextCompare) > 0 And InStr(1, daten(zeile, 2),  _
TextBox2, vbTextCompare) Then eintragen = True
End If
If status = 2 Then
If InStr(1, daten(zeile, 1), TextBox1, vbTextCompare) > 0 Then eintragen = True
End If
If status = 3 Then
If InStr(1, daten(zeile, 2), TextBox2, vbTextCompare) Then eintragen = True
End If
If eintragen Then
Me.ListBox1.AddItem Tabelle1.Cells(zeile, 3).Value
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = zeile
End If
Next
'nur ein Wert eintragen
If Me.ListBox1.ListCount = 1 Then
zeile = Me.ListBox1.List(0, 1)
TextBox1 = Trim(CStr(Tabelle1.Cells(zeile, 1).Value))
TextBox2 = Tabelle1.Cells(zeile, 2).Value
Me.TextBox3 = Trim(CStr(Tabelle1.Cells(zeile, 3).Value))
End If
End Sub

VG
Anzeige
AW: In Userform Suchfunktion für 2 Textboxen
10.09.2020 12:07:18
Michael
Hallo Matthias,
perfekt ...jetzt geht es. :)
Ich danke dir!
Gruß
Michael

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige