ich sitze den halben Tag erfolglos daran ein bestimmtes Problem zu lösen. Auch die Suche im Forum konnte mir nicht helfen.
In meiner Excel Arbeitsmappe befinden sich drei Tabellen. In der ersten Tabelle ("Stammblatt") befinden sich Personaldaten. Die Nachnamen befinden sich in Spalte V. Die Vornamen in Spalte W, die Personalnummer in Spalte X und das Einstellungsdatum in Spalte Y. Jeweils ab der dritten Zeile.
Ich habe eine UserForm mit einer ListBox erstellt. Greife ich auf die UserForm von Tabelle 1 ("Stammblatt") zu, füllt sich die darin befindliche ListBox mit den Personaldaten. Greife ich auf die UserForm von Tabelle 3 ("UB-Frontseite") zu füllt sich die ListBox leider nicht.
Hier der Code:
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'Dim strLastSheet As String
'strLastSheet = ActiveSheet.Name
If IsNull(ListBox1.Value) Then
MsgBox "Sie haben nichts ausgewählt!"
Exit Sub
Else
Personalnummer = ListBox1.Value
If ActiveSheet Is Sheets("Stammblatt") Then Sheets("Stammblatt").Range("D6").Value = _
Personalnummer
If ActiveSheet Is Sheets("UB-Frontseite") Then Sheets("UB-Frontseite").Range("O13").Value = _
Personalnummer
Unload Me
End If
End Sub
Private Sub TextBox1_Change()
Dim arr() As Variant
Dim index As Long, iCount As Long
x = IIf(IsEmpty(Sheets("Stammblatt").Range("V65536")), Sheets("Stammblatt").Range("V65536").End( _
xlUp).Row, 65536)
If TextBox1.Value = "" Then
ListBox1.RowSource = "V3:Y" & x
Exit Sub
End If
ListBox1.RowSource = ""
ListBox1.Clear
For index = 3 To x ' die Zahl 3 gibt an ab welcher Zeile gesucht werden soll
If LCase(Left(Sheets("Stammblatt").Cells(index, 22), Len(TextBox1))) = LCase(TextBox1) Then
If Sheets("Stammblatt").Cells(index, 22) "" Then
On Error Resume Next
ReDim Preserve arr(2, 0 To iCount)
arr(0, iCount) = Sheets("Stammblatt").Cells(index, 22)
arr(1, iCount) = Sheets("Stammblatt").Cells(index, 23)
arr(2, iCount) = Sheets("Stammblatt").Cells(index, 24)
arr(3, iCount) = Sheets("Stammblatt").Cells(index, 25)
iCount = iCount + 1 ' das + 1 zeigt nach einem Testboxwechsel alle Fahrpersonale _
mit diesen Buchstabenkombinationen an
ListBox1.Column = arr
End If
End If
Next
On Error GoTo 0
End Sub
Private Sub UserForm_Initialize()
TextBox1 = ""
x = IIf(IsEmpty(Sheets("Stammblatt").Range("V65536")), Sheets("Stammblatt").Range("V65536").End( _
xlUp).Row, 65536)
ListBox1.RowSource = ("V3:y") & x
End Sub
Das merkwürdige ist: Wenn ich von Tabelle 3 die UserForm öffne und die TextBox nutze, um das Personal nach Nachnamen zu suchen, füllt sich die ListBox mit den Personaldaten.
Ich wäre sehr dankbar, wenn mir jemand helfen könnte den Code so zu ändern, dass die ListBox sich auch mit den Personaldaten füllt wenn ich von Tabelle 3 darauf zugreife, obwohl die Personaldaten in Tabelle 1 stehen.
MfG Philipp