Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
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

Suchfunktion via UserForm

Suchfunktion via UserForm
12.01.2024 12:27:24
Wenzel
Hallo Zusammen,

ich habe folgenen Code in meiner UserForm_NeuerEintrag:

Private Sub CommandButton_Übernehmen_Click()

Dim last As Long
Dim missingFields As String
Dim lightRedColor As Long

' Helle Rotfarbe (255, 204, 204)
lightRedColor = RGB(255, 204, 204)

' Überprüfen und Markieren der leeren erforderlichen Felder
If UserForm_NeuerEintrag.TextBox_Name.Value = "" Then
missingFields = missingFields & "Name, "
UserForm_NeuerEintrag.TextBox_Name.BackColor = lightRedColor
Else
UserForm_NeuerEintrag.TextBox_Name.BackColor = RGB(255, 255, 255) ' Standard-Hintergrund
End If

If UserForm_NeuerEintrag.TextBox_Typ.Value = "" Then
missingFields = missingFields & "Typ, "
UserForm_NeuerEintrag.TextBox_Typ.BackColor = lightRedColor
Else
UserForm_NeuerEintrag.TextBox_Typ.BackColor = RGB(255, 255, 255)
End If

If UserForm_NeuerEintrag.TextBox_PIN.Value = "" Then
missingFields = missingFields & "PIN, "
UserForm_NeuerEintrag.TextBox_PIN.BackColor = lightRedColor
Else
UserForm_NeuerEintrag.TextBox_PIN.BackColor = RGB(255, 255, 255)
End If

If UserForm_NeuerEintrag.TextBox_KartenNr.Value = "" Then
missingFields = missingFields & "KartenNr, "
UserForm_NeuerEintrag.TextBox_KartenNr.BackColor = lightRedColor
Else
UserForm_NeuerEintrag.TextBox_KartenNr.BackColor = RGB(255, 255, 255)
End If

If UserForm_NeuerEintrag.TextBox_Standort.Value = "" Then
missingFields = missingFields & "Standort, "
UserForm_NeuerEintrag.TextBox_Standort.BackColor = lightRedColor
Else
UserForm_NeuerEintrag.TextBox_Standort.BackColor = RGB(255, 255, 255)
End If

' Überprüfen, ob fehlende Felder vorhanden sind
If missingFields > "" Then
missingFields = Left(missingFields, Len(missingFields) - 2)
MsgBox "Bitte füllen Sie folgende erforderlichen Felder aus: " & missingFields
Exit Sub
End If

last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1

' Zurücksetzen der Hintergrundfarben aller Textboxen
UserForm_NeuerEintrag.TextBox_Name.BackColor = RGB(255, 255, 255)
UserForm_NeuerEintrag.TextBox_Typ.BackColor = RGB(255, 255, 255)
UserForm_NeuerEintrag.TextBox_PIN.BackColor = RGB(255, 255, 255)
UserForm_NeuerEintrag.TextBox_KartenNr.BackColor = RGB(255, 255, 255)
UserForm_NeuerEintrag.TextBox_Standort.BackColor = RGB(255, 255, 255)

' Daten in die Tabelle eintragen
ActiveSheet.Cells(last, 1).Value = UserForm_NeuerEintrag.TextBox_KartenNr.Value
ActiveSheet.Cells(last, 2).Value = UserForm_NeuerEintrag.TextBox_PIN.Value
ActiveSheet.Cells(last, 3).Value = UserForm_NeuerEintrag.TextBox_TelefonNr.Value
ActiveSheet.Cells(last, 4).Value = UserForm_NeuerEintrag.TextBox_Tarif.Value
ActiveSheet.Cells(last, 5).Value = UserForm_NeuerEintrag.TextBox_Name.Value
ActiveSheet.Cells(last, 6).Value = UserForm_NeuerEintrag.TextBox_Typ.Value
ActiveSheet.Cells(last, 7).Value = UserForm_NeuerEintrag.TextBox_Standort.Value
ActiveSheet.Cells(last, 8).Value = UserForm_NeuerEintrag.TextBox_Info.Value
ActiveSheet.Cells(last, 9).Value = UserForm_NeuerEintrag.TextBox_Rückgabe.Value
ActiveSheet.Cells(last, 10).Value = UserForm_NeuerEintrag.TextBox_Inventur.Value

' UserForm schließen
Unload UserForm_NeuerEintrag


End Sub


dieser funktioniert Einwandfrei. Ich gebe meine Werte ein, sie werden in die entsprechende Zelle eingefügt.

Ich habe eine zweite UserForm erstellt "UserForm_EintragSuchen", mit der sich die gleiche Maske öffnet wie in der UserForm_NeuerEintrag.
Ich bekomme es aber leider einfach nicht hin diese Suchfunktion richtig einzurichten.

Hier ist mein bisheriger Code:

Private Sub CommandButton_Suchen_Click()

Dim ws As Worksheet
Dim searchTerm As String
Dim foundCell As Range

' Arbeitsblatt in dem Gesucht werden soll definieren
Set ws = ThisWorkbook.Worksheets("Inventar")

' Suchbegriff aus der TextBox lesen
searchTerm = Me.TextBox_KartenNr2.Value

' Begriff in der ersten Spalte (Spalte A) des Arbeitsblatts suchen
Set foundCell = ws.Columns(1).Find(What:=searchTerm, LookIn:=xlValues, LookAt:=xlWhole)

' Wenn der Begriff gefunden wurde, Zelle markieren
If Not foundCell Is Nothing Then
foundCell.EntireRow.Select
Else
MsgBox "Der Suchbegriff wurde nicht gefunden."
End If

' Schließen des Such-UserForm
Unload Me
End Sub


Ich gebe in dieser UserForm einen Wert in das Textfeld "TextBox_KartenNr2" ein, dieser wird gefunden, und die komplette Zeile wird markiert.
Leider bekomme ich es nicht hin das für alle anderen Textboxen zu übernehmen. Ich habe diverse Methoden getestet, hier wurde aber immer nur Zelle A1, bzw Spalte 1 markiert, wenn ich in eine andere Textbox ausser TextBox_KartenNr2 etwas geschrieben habe.

Userbild

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion via UserForm
12.01.2024 15:25:52
Alwin Weisangler
Hallo,

benenne die Textboxen wieder in TextBox1 usw. bis TextBox10 um und suche mit Schleife.


Private Sub CommandButton_Suchen_Click()
Dim i&, j&
With Sheets("Inventar").ListObjects(1)
If .DataBodyRange Is Nothing Then Exit Sub
For i = 2 To 10
Controls("TextBox" & i) = ""
Next i
With .DataBodyRange
For i = 1 To .Rows.Count
If .Cells(i, 1).Text = TextBox1 Then 'Prüfen auf gesuchte Kartennumer
For j = 1 To 10
Controls("TextBox" & j) = .Cells(i, j)
Next j
End If
Next i
End With
End With
End Sub


Gruß Uwe
Anzeige
AW: Suchfunktion via UserForm
13.01.2024 14:11:46
Alwin Weisangler
Hallo,

anbei mal alles in einem Userform. Diesmal ohne Listbox sondern nur Textboxen. Die Suchschleife habe ich dahingehend erweitert, dass man die Spalte in der gesucht wird auswählt. Das Label zur Textbox wird gefärbt und der in dieser Textbox eingegebene Wert (vollständige Zeichenfolge für Treffer) wird gesucht. Die Suche ist über Klasse geregelt, damit das bei mir nicht einrostet.
Der Rest ist selbsterklärend.
https://www.herber.de/bbs/user/166060.xlsm

Gruß Uwe
AW: Suchfunktion via UserForm
12.01.2024 16:34:30
Mullit
Hallo,

solltest Du das Umbenennen scheuen, gehts alternativ auch mit der Array-Func, direkt über Indizes wie Alwin vorschlug ist nat. immer einfacher...

Dim j As Long

Dim avntTextboxes As Variant
avntTextboxes = Array(TextBox_KartenNr, TextBox_PIN, TextBox_TelefonNr, _
TextBox_Tarif, TextBox_Name, TextBox_Typ, TextBox_Standort, TextBox_Info, _
TextBox_Rückgabe, TextBox_Inventur)
'...
For j = 0 To UBound(avntTextboxes)
avntTextboxes(j).Value = .Cells(i, j).Value
Next

Gruß, Mullit
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige