05.09.2019, 10:12
Hallo Zusammen,
ich habe mit drei Userforms eine Datenbank aufgebaut und habe bereits eine Suchfunktion "Suchmaske"integriert, die an sich funktioniert. Die Ergebnisse werden in einer Listbox angezeigt und dann kann ausgewählt werden. Leider stehen in der Datenbank über 50 Spalten zur Verfügung, die ich nach der Auswahl in ein neues Userform "Änderungsmaske" übernehmen möchte. Die Listbox ist begrenzt auf zehn...
Kann ich ggf. die Suchfunktion erweitern, um mir die Zeile anzeigen zulassen, auf die ich nach der Auswahl aus der Ergebnisliste wieder zugreifen kann, um dann wieder die ganzen Spalteninhalte zu übernehmen?
Leider ist das Hochladen von Dateien von diesem Rechner gesperrt, also hier ein Auszug meiner Suchfunktion:
Sub suchen_Person()
Dim lng As Long
Dim i As Integer
i = 0
ListBox1.Clear
Sheets("DB").Activate
If TextBox_Name.Value = "" Then
suchen_vorname
Else
For lng = 2 To ActiveSheet.UsedRange.Rows.Count + 1
If InStr(LCase(Cells(lng, 1).Value), LCase(TextBox_Name.Value)) > 0 Then 'sucht in der 1.Spalte
ListBox1.AddItem Cells(lng, 1).Value ' sucht in der 1. Spalte
ListBox1.Column(1, i) = Cells(lng, 1).Value
ListBox1.Column(2, i) = Cells(lng, 2).Value
ListBox1.Column(3, i) = Cells(lng, 3).Value
ListBox1.Column(4, i) = Cells(lng, 4).Value
ListBox1.Column(5, i) = Cells(lng, 5).Value
ListBox1.Column(6, i) = Cells(lng, 6).Value
ListBox1.Column(7, i) = Cells(lng, 7).Value
ListBox1.Column(8, i) = Cells(lng, 8).Value
ListBox1.Column(9, i) = Cells(lng, 9).Value
i = i + 1
Else
End If
Next lng
End If
End Sub
Die Auswahl der Ergebnisliste, habe ich wie folgt gelöst (allerdings nur beschränkt möglich):
Private Sub ListBox1_Click()
TextBox2 = ListBox1.List(ListBox1.ListIndex, 3)
TextBox3 = ListBox1.List(ListBox1.ListIndex, 2)
TextBox4 = ListBox1.List(ListBox1.ListIndex, 1)
KopieErstellen 'Versuch der Zwischenspeicherung
End Sub
Übernahme der Daten in die "Änderungsmaske":
Private Sub UserForm_Initialize()
UserForm2.TextBox_B_Nummer = UserForm3.TextBox2.Text
UserForm2.TextBox_Name = UserForm3.TextBox4.Text
UserForm2.TextBox_Vorname = UserForm3.TextBox3.Text
End Sub
Für Hilfe jeglicher Art, auch Vorschläge zu anderen Lösungsansätzen wäre ich dankbar.
ich habe mit drei Userforms eine Datenbank aufgebaut und habe bereits eine Suchfunktion "Suchmaske"integriert, die an sich funktioniert. Die Ergebnisse werden in einer Listbox angezeigt und dann kann ausgewählt werden. Leider stehen in der Datenbank über 50 Spalten zur Verfügung, die ich nach der Auswahl in ein neues Userform "Änderungsmaske" übernehmen möchte. Die Listbox ist begrenzt auf zehn...
Kann ich ggf. die Suchfunktion erweitern, um mir die Zeile anzeigen zulassen, auf die ich nach der Auswahl aus der Ergebnisliste wieder zugreifen kann, um dann wieder die ganzen Spalteninhalte zu übernehmen?
Leider ist das Hochladen von Dateien von diesem Rechner gesperrt, also hier ein Auszug meiner Suchfunktion:
Sub suchen_Person()
Dim lng As Long
Dim i As Integer
i = 0
ListBox1.Clear
Sheets("DB").Activate
If TextBox_Name.Value = "" Then
suchen_vorname
Else
For lng = 2 To ActiveSheet.UsedRange.Rows.Count + 1
If InStr(LCase(Cells(lng, 1).Value), LCase(TextBox_Name.Value)) > 0 Then 'sucht in der 1.Spalte
ListBox1.AddItem Cells(lng, 1).Value ' sucht in der 1. Spalte
ListBox1.Column(1, i) = Cells(lng, 1).Value
ListBox1.Column(2, i) = Cells(lng, 2).Value
ListBox1.Column(3, i) = Cells(lng, 3).Value
ListBox1.Column(4, i) = Cells(lng, 4).Value
ListBox1.Column(5, i) = Cells(lng, 5).Value
ListBox1.Column(6, i) = Cells(lng, 6).Value
ListBox1.Column(7, i) = Cells(lng, 7).Value
ListBox1.Column(8, i) = Cells(lng, 8).Value
ListBox1.Column(9, i) = Cells(lng, 9).Value
i = i + 1
Else
End If
Next lng
End If
End Sub
Die Auswahl der Ergebnisliste, habe ich wie folgt gelöst (allerdings nur beschränkt möglich):
Private Sub ListBox1_Click()
TextBox2 = ListBox1.List(ListBox1.ListIndex, 3)
TextBox3 = ListBox1.List(ListBox1.ListIndex, 2)
TextBox4 = ListBox1.List(ListBox1.ListIndex, 1)
KopieErstellen 'Versuch der Zwischenspeicherung
End Sub
Übernahme der Daten in die "Änderungsmaske":
Private Sub UserForm_Initialize()
UserForm2.TextBox_B_Nummer = UserForm3.TextBox2.Text
UserForm2.TextBox_Name = UserForm3.TextBox4.Text
UserForm2.TextBox_Vorname = UserForm3.TextBox3.Text
End Sub
Für Hilfe jeglicher Art, auch Vorschläge zu anderen Lösungsansätzen wäre ich dankbar.