meine Listbox kriege ich nicht gefüllt.
Der Bereich ist: "Muster-Mappe" "AF91:AJ338"
kann sich jedoch verändern, durch einfügen oder löschen.
Aber erst mal füllen ?
Gruss walter mb
Private Sub UserForm_Initialize()
Sheets("Kulanzblatt-VK").Activate
With ListBox1
.ColumnCount = 5 'Anzahl der Spalten
.ColumnHeads = True 'Überschriften werden angezeigt
.RowSource = "AF91:AJ338" 'Die Quelle der Liste
.ColumnWidths = "1cm;1cm;3cm;3cm;4cm"
End With
End Sub
Private Sub UserForm_Initialize()
Dim lzeile As Long
Dim strSh As String, strSp As String, strSpEnde As String
Dim intSpStart As Integer, intStartZeile As Integer, intSpEnde As Integer
strSh = "Tabelle1" ' Sheet wird festgelegt
intSpStart = 1 ' Spalte A wird festgelegt
intSpEnde = 2 ' Spalte B wird festgelegt
lzeile = Sheets(strSh).Cells(Sheets(strSh).Rows.Count, intSpEnde).End(xlUp).Row ' letzte Zeile wird ermittelt
intStartZeile = 1 ' Startzeile wird festgelegt
Select Case intSpStart
Case 1: strSp = "A"
Case 2: strSp = "B"
Case 3: strSp = "C"
End Select
Select Case intSpEnde
Case 1: strSpEnde = "A"
Case 2: strSpEnde = "B"
Case 3: strSpEnde = "C" ' usw. Spaltennummer ist zu erfahren durch eingabe von =Spalte() in entsp. Spalte
End Select
With Sheets(strSh)
With Me.ListBox1
.ColumnCount = intSpEnde - intSpStart + 1 'Anzahl der Spalten
.ColumnHeads = True 'Überschriften werden angezeigt
.RowSource = strSp & intStartZeile & ": " & strSpEnde & lzeile 'Die Quelle der Liste"
.ColumnWidths = "1cm;1cm;3cm;3cm;4cm"
End With
End With
End Sub
Private Sub CommandButton2_Click()
'---------------wenn ich dies "freimache" wird gfüllt -----------------------------
' Sheets("Kulanzblatt-VK").Activate
' With ListBox1
' .ColumnCount = 5 'Anzahl der Spalten
' .ColumnHeads = True 'Überschriften werden angezeigt
' .RowSource = "AF91:AJ338" 'Die Quelle der Liste
' .ColumnWidths = "1cm;1cm;3cm;3cm;4cm"
' End With
Dim lzeile As Long
Dim strSh As String, strSp As String, strSpEnde As String
Dim intSpStart As Integer, intStartZeile As Integer, intSpEnde As Integer
strSh = "Kulanzblatt-VK" ' Sheet wird festgelegt
intSpStart = 32 ' Spalte A wird festgelegt
intSpEnde = 36 ' Spalte B wird festgelegt
lzeile = Sheets(strSh).Cells(Sheets(strSh).Rows.Count, intSpEnde).End(xlUp).Row
' letzte Zeile wird ermittelt
intStartZeile = 32 ' Startzeile wird festgelegt
Select Case intSpStart
Case 1: strSp = "32"
Case 2: strSp = "33"
Case 3: strSp = "34"
Case 4: strSp = "35"
Case 5: strSp = "36"
'Case 1: strSp = "AF"
'Case 2: strSp = "AG"
'Case 3: strSp = "AH"
'Case 4: strSp = "AI"
'Case 5: strSp = "AJ"
End Select
Select Case intSpEnde
Case 1: strSp = "32"
Case 2: strSp = "33"
Case 3: strSp = "34"
Case 4: strSp = "35"
Case 5: strSp = "36"
'usw. Spaltennummer ist zu erfahren durch eingabe von =Spalte() in entsp. Spalte
End Select
With Sheets(strSh)
With VK_Namen.ListBox1
.ColumnCount = intSpEnde - intSpStart + 1 'Anzahl der Spalten
.ColumnHeads = True 'Überschriften werden angezeigt
.RowSource = strSp & intStartZeile & ": " & strSpEnde & lzeile 'Die Quelle der Liste"
.ColumnWidths = "1cm;1cm;3cm;3cm;4cm"
End With
End With
End Sub
Private Sub CommandButton5_Click()
'Sub NW_ProvBlatt_Verkäufer_Löschen()
Sheets("Kulanzblatt-VK").Select
Sheets("Kulanzblatt-VK").Unprotect ("ww") 'so hebt richtig auf
z = ActiveCell().Row
If ActiveSheet.Range(Cells(z, 33), Cells(z, 36)).Select Then
Antwort = MsgBox("Zeile wirklich Löschen ?", vbYesNo)
If Antwort = vbNo Then
Worksheets("Kulanzblatt-VK").Activate
Else: Selection.Delete
End If
End If
End Sub
Um eine Listbox in einem UserForm mit Excel VBA zu füllen, kannst du die folgenden Schritte befolgen:
UserForm erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle ein neues UserForm.
Listbox hinzufügen: Ziehe eine Listbox (ListBox1) auf das UserForm.
Code im UserForm-Initialize-Event: Füge den folgenden Code in das UserForm_Initialize-Ereignis ein:
Private Sub UserForm_Initialize()
Sheets("Kulanzblatt-VK").Activate
With ListBox1
.ColumnCount = 5 ' Anzahl der Spalten
.ColumnHeads = True ' Überschriften werden angezeigt
.RowSource = "AF91:AJ338" ' Die Quelle der Liste
.ColumnWidths = "1cm;1cm;3cm;3cm;4cm"
End With
End Sub
Datenquelle anpassen: Stelle sicher, dass der RowSource-Bereich dynamisch angepasst wird, wenn sich die Daten ändern. Du kannst dies tun, indem du den Code anpasst, um die letzte Zeile automatisch zu finden.
Daten einfügen: Verwende einen Command-Button, um die Listbox mit neuen Daten zu befüllen:
Private Sub CommandButton1_Click()
' Fülle die Listbox mit Daten
Call ListboxFüllen
End Sub
Daten in die Listbox einfügen: Erstelle eine separate Subroutine, um die Listbox zu befüllen:
Sub ListboxFüllen()
' Beispielcode für das Füllen der Listbox
Dim i As Long
For i = 1 To 10
ListBox1.AddItem "Eintrag " & i
Next i
End Sub
RowSource korrekt ist und ob der Bereich tatsächlich Daten enthält.RowSource immer aktuell ist.RowSource kannst du die Listbox auch manuell mit .AddItem befüllen.Verwendung von Arrays: Du kannst die Daten in ein Array laden und dann die Listbox mit einer Schleife befüllen.
Dim DatenArray As Variant
DatenArray = Range("AF91:AJ338").Value
For i = LBound(DatenArray) To UBound(DatenArray)
ListBox1.AddItem DatenArray(i, 1)
Next i
Hier sind einige praktische Beispiele, wie du die Listbox füllen kannst:
Füllen mit einer Tabelle:
Private Sub UserForm_Initialize()
Dim letzteZeile As Long
letzteZeile = Sheets("Kulanzblatt-VK").Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.RowSource = "A1:A" & letzteZeile
End Sub
Daten aus mehreren Spalten:
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 10
ListBox1.AddItem Cells(i, 1).Value ' Spalte A
ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(i, 2).Value ' Spalte B
Next i
End Sub
ListBox_Click-Ereignis, um Daten in Textboxen zu laden, wenn ein Eintrag ausgewählt wird.1. Wie kann ich die Listbox dynamisch aktualisieren?
Du kannst den RowSource-Bereich dynamisch anpassen, indem du den Code zur Bestimmung der letzten Zeile verwendest.
2. Wie kann ich die Daten in der Listbox bearbeiten?
Du kannst die Daten in einer Textbox bearbeiten und anschließend die Änderungen zurück in die Listbox oder die zugrunde liegende Tabelle übertragen.