Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-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

In Userform Suchfunktion für 2 Textboxen

Betrifft: In Userform Suchfunktion für 2 Textboxen von: Michael
Geschrieben am: 07.09.2020 12:58:32

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael
Geschrieben am: 07.09.2020 13:01:25

https://www.herber.de/bbs/user/140092.xlsm

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael
Geschrieben am: 07.09.2020 13:12:40

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

Betrifft: Ich war so frei...Auf offen gestellt! (owT)
von: Pierre
Geschrieben am: 07.09.2020 13:17:17



Betrifft: AW: Ich war so frei...Auf offen gestellt! (owT)
von: Michael
Geschrieben am: 07.09.2020 13:30:28

Danke :)

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Matthias
Geschrieben am: 07.09.2020 15:39:24

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


Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael
Geschrieben am: 07.09.2020 15:57:00

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Matthias
Geschrieben am: 08.09.2020 13:32:09

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael
Geschrieben am: 08.09.2020 15:23:07

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Matthias
Geschrieben am: 08.09.2020 18:26:11

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael de Jong
Geschrieben am: 08.09.2020 18:56:39

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Matthias
Geschrieben am: 08.09.2020 21:15:03

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael
Geschrieben am: 09.09.2020 12:57:18

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Matthias
Geschrieben am: 09.09.2020 21:08:05

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

Betrifft: AW: In Userform Suchfunktion für 2 Textboxen
von: Michael
Geschrieben am: 10.09.2020 12:07:18

Hallo Matthias,



perfekt ...jetzt geht es. :)



Ich danke dir!



Gruß

Michael

Beiträge aus dem Excel-Forum zum Thema "In Userform Suchfunktion für 2 Textboxen"