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

Tabelle mit Listbox auslesen

Tabelle mit Listbox auslesen
09.12.2018 14:59:37
Peerli
Hallo.
Nu sitze ich den ganzen Nachmittag an folgendem Code...
Private Sub UserForm_Activate()
Dim lZeile%
Dim wks As Worksheet
Dim Zeile As Long
Dim rng As Range
Set wks = Sheets("Hinweise")
Set rng = wks.Range("A13:B600")
lZeile = wks.Cells(Rows.Count, 1).End(xlUp).Row
With lst_Release
For Zeile = 1 To lZeile
'If Not IsEmpty(wks.Cells(Zeile, 1)) Then
.AddItem wks.Cells(Zeile, 1)
.List(.ListCount - 1, 1) = wks.Cells(Zeile, 2)
' End If
Next Zeile
.ColumnHeads = False
.ColumnCount = 2
.ColumnWidths = "2cm;10cm"
'.ListIndex = .ListCount - 1
End With
End Sub
Ich möchte aus dem Sheet "Hinweise" alle Spalten auslesen (in diesem Fall sind es die Spalten A und B) und in die ListBox (lst_Release) des UF schreiben lassen.
Soweit macht er das schon ganz gut, aber zum einen würde ich gern erst ab der Zeile 13 bis zur letzten Zeile in diesem Blatt abfragen und zweitens werden nicht alle Zeilen ausgelesen. In Spalte A steht ein Datum und zu diesem Datum sind mehrere Zeilen mit Informationen zugeordnet, wobei mehrere Zeilen gefüllt sind, nur
Meine VBA-Kenntnisse sind erst am Anfang und ich probiere mich gerade an einem Projekt.
Hat jemand eine bessere Lösung?
Anbei ein Bild
Userbild
LG
Peer

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle mit Listbox auslesen
09.12.2018 16:06:33
onur
Schönes Bild - kaum lesbar aber schön.
Aber wo ist die Datei?
AW: Tabelle mit Listbox auslesen
09.12.2018 16:27:05
Peerli
Hallo.
Das Bild war auch nur als Veranschaulichung gedacht.
Die Datei wäre aktuell zu groß für dieses Forum.
Ich hatte gehofft, das man mit dem Bild und den Code das Problem erkennt.
Aktuell scheint es sogar am Range zu scheitern.
Ich habe jetzt versucht, etwas zu ändern...
Private Sub UserForm_Activate()
Dim lZeile%
Dim wks As Worksheet
Dim Zeile As Long
Dim rng As Range
Set wks = Worksheets("Hinweise").Range(Cells(13, 1), Cells(13, 2))
lZeile = Cells(Rows.Count, 1).End(xlUp).Row
With lst_Release
For Zeile = 1 To lZeile
If Not IsEmpty(wks.Cells(Zeile, 1)) Then
.AddItem wks.Cells(Zeile, 1)
.List(.ListCount - 1, 1) = wks.Cells(Zeile, 2)
End If
Next Zeile
.ColumnHeads = False
.ColumnCount = 2
.ColumnWidths = "2cm;10cm"
'.ListIndex = .ListCount - 1
End With
End Sub
... bekomme aber beim Ausführen der UF eine Fehlermeldung mit Verweise auf
Set wks = Worksheets("Hinweise").Range(Cells(13, 1), Cells(13, 2))
LG
Anzeige
AW: Tabelle mit Listbox auslesen
09.12.2018 16:31:03
Peerli
Ich habe
Set wks = Worksheets("Hinweise").Range(Cells(13, 1), Cells(13, 2))

durch
Set wks = Worksheets("Hinweise").Range(Cells(13, 1), Cells(lZeile, 2))

ersetzt.
Trotzdem bleibt das Problem.
AW: Tabelle mit Listbox auslesen
09.12.2018 17:24:32
Peerli
Hallo.
Zweites Problem konnte ich lösen...
ich habe
lZeile = Cells(Rows.Count, 1).End(xlUp).Row

durch lZeile = Cells(Rows.Count, 2).End(xlUp).Row
geändert.
Bleibt nur noch erstes Problem
LG
Peerli
Anzeige
AW: Tabelle mit Listbox auslesen
09.12.2018 17:44:58
Peerli
Erstes Problem konnte ich ebenfalls lösen. Es sieht zwar nicht elegant aus, aber für den Anfang...
Private Sub UserForm_Activate()
Dim lZeile%
Dim wks As Range
Dim Zeile As Long
Dim rng As Range
Set wks = Worksheets("Hinweise").Range(Cells(10, 1), Cells( _
10, 2))
lZeile = Cells(Rows.Count, 2).End(xlUp).Row
With lst_Release
For Zeile = 1 To lZeile
'If Not IsEmpty(wks.Cells(Zeile, 1)) Then
.AddItem wks.Cells(Zeile, 1)
.List(.ListCount - 1, 1) = wks.Cells(Zeile, 2)
'End If
Next Zeile
.ColumnHeads = False
.ColumnCount = 2
.ColumnWidths = "2cm;7cm"
.ListIndex = .ListCount - 1
End With
End Sub

Anzeige
AW: Tabelle mit Listbox auslesen
09.12.2018 18:01:27
Werner
Hallo,
etwas kürzer und ohne Schleife über dein Tabelleblatt.
Private Sub UserForm_Activate()
Dim lZeile As Long, wks As Worksheet, rng As Range
Set wks = Worksheets("Hinweise")
With wks
lZeile = .Cells(.Rows.Count, 2).End(xlUp).Row
Set rng = .Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2))
Me.lst_Release.List = rng.Value
End With
Set wks = Nothing
End Sub
Die Spaltenzahl, ob ColumnsHead oder nicht sowie die Spaltenbreite kannst du doch direkt im Eigenschaftenfenster deiner Listbox einstellen, dann brauchst du das nicht im Code.
Gruß Werner
Anzeige
nimm den...
09.12.2018 18:12:21
Werner
Hallo,
...beim anderen war noch eine Zeile zu viel drin.
Private Sub UserForm_Activate()
Dim wks As Worksheet, rng As Range
Set wks = Worksheets("Hinweise")
With wks
Set rng = .Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2))
Me.lst_Release.List = rng.Value
End With
Set wks = Nothing: Set rng = Nothing
End Sub
Gruß Werner
geht noch kürzer...
09.12.2018 18:16:47
Werner
Hallo,
...nämlich so:
Private Sub UserForm_Activate()
With Worksheets("Hinweise")
Me.lst_Release.List = .Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2)) _
.Value
End With
End Sub
Den Zeilenumbruch im Code kannst du raus machen, der wird von der Forensoftware eingefügt.
Gruß Werner
Anzeige
AW: geht noch kürzer...
09.12.2018 18:49:19
Peerli
Hallo Werner.
Vielen Dank.
Und für die Formatierungen der ListBox, die bei deinem Code scheinbar ohne Funktion sind habe ich noch folgendes dazu"gecodet"
With Worksheets("Hinweise")
Me.lst_Release.List = .Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2)) _
.Value
With Me.lst_Release
.ColumnHeads = False
.ColumnCount = 2
.ColumnWidths = "2cm;7cm"
.ListIndex = .ListCount - 1
End With
End With
LG
Peer
P.S. Irgendwie bin ich jetzt stolz auf mich. ;-)
AW: geht noch kürzer...
09.12.2018 21:11:52
Werner
Hallo Peer,
das habe ich dir doch geschrieben. Wozu denn die Einstellungen der Listbox jedes mal beim Start der Userform im Code setzten. Das kannst du doch einfach im Eigenschaftenfenster der Listbox einstellen, dann brauchst du den Code dafür nicht.
Lediglich der Listindex muss im Code gesetzt werden.
Private Sub UserForm_Activate()
With Worksheets("Hinweise")
Me.lst_Release.List = .Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2)) _
_
.Value
End With
Me.lst_Release.ListIndex = Me.lst_Release.ListCount - 1
End Sub
Gruß Werner
Anzeige
AW: geht noch kürzer...
10.12.2018 19:24:33
Peerli
Hallo Werner.
Es ist mir schon bewusst, ich habe nochmals nach deinem Post nachgeschaut.
Der Vorteil hier ist, dass man die Einstellung im Code mit Copy und Paste in andere Objekte einfach einfügen kann ohne nach den Einstellungen zu schauen.
Danke nochmals für deine Hilfe.
LG
Peer
Gerne u.Danke für die Rückmeldung. o.w.T.
10.12.2018 21:11:57
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige