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

ListBox

ListBox
05.05.2020 14:05:48
Marquardt
Hallo,
ich habe eine Listenbox in UserForm1. Leider benötige ich 15 Spalten. Im Netz konnte ich lese, dass hier " .rowsource " und nicht ".AddItem" verwendet werden muss. Aber wie?
Hier mein jetziger Code.

Private Sub CommandButton1_Click()
Dim zelle As Range
Dim strZelle As String
ListBox1.Clear
Sheets("ME").Select
With Range("E2:E10000" & Range("E6020").End(xlUp).Row)
Set zelle = .Find(TextBox1.Value, LookIn:=xlValues)
If Not zelle Is Nothing Then
strZelle = zelle.Address
Do
With ListBox1
ListBox1.ColumnWidths = "0 Pt;100 Pt;40 Pt;40 Pt;200 Pt;200 Pt;200 Pt"
.ColumnCount = 6
.AddItem zelle.Address
.List(.ListCount - 1, 1) = "Zeile " & zelle.Row
.List(.ListCount - 1, 2) = Cells(zelle.Row, 2)
.List(.ListCount - 1, 4) = Cells(zelle.Row, 4)
.List(.ListCount - 1, 5) = Cells(zelle.Row, 5)
.List(.ListCount - 1, 1) = Cells(zelle.Row, 1)
End With
Set zelle = .FindNext(zelle)
Loop While zelle.Address  strZelle
End If
End With
End Sub

Vielleicht kann mir jemand helfen?

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox
05.05.2020 14:09:58
Hajo_Zi
ListBox1.ColumnCount = 17
ListBox1.RowSource = "Tabelle3!A1:Q17"
GrußformelHomepage
Bitte Fragestellung richtig lesen...
05.05.2020 14:38:25
Martin
Hallo Hajo,
Marquardt hat doch ihren Code gepostet und aus dem geht eindeutig hervor, dass die ListBox nicht mit einem zusammenhängenden Zellenbereich gefüttert wird.
Viele Grüße
Martin
AW: Bitte Fragestellung richtig lesen... Du Auch
05.05.2020 14:40:19
Hajo_Zi

ich habe eine Listenbox in UserForm1. Leider benötige ich 15 Spalten. Im Netz konnte ich lese,  _
dass hier " .rowsource " und nicht ".AddItem" verwendet werden muss. Aber wie?
Gruß Hajo
Anzeige
AW: Bitte Fragestellung richtig lesen... Du Auch
05.05.2020 14:47:29
Martin
Hallo Hajo,
...und wieder verfällst du in alte Muster. Mein Name ist Martin, also wäre ein "Hallo Martin" ganz nett.
Willst und kannst du die Aufgabenstellung nicht verstehen? Da war doch ein Code-Beispiel, dass die Daten zeilenweise nach gewissen Kriterien eingelesen werden!
Viele Grüße
Martin
AW: ListBox
05.05.2020 14:43:54
Marquardt
Hallo Hajo,
vielen Dank für die schnelle Antwort.
Leider habe ich Laufzeitfehler 70.
Ich werde mich noch einmal belesen.
Vielen Dank trotzdem.
Gruß Detlef
AW: ListBox
05.05.2020 14:44:45
Hajo_Zi
in meiner Dateio nicht.
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
http://www.excel-ist-sexy.de/bilder-statt-datei/
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
Ganz tolle Antwort, Hajo.... :-( o.w.T.
05.05.2020 14:49:43
Martin
AW: Ganz tolle Antwort, Hajo.... :-( o.w.T.
05.05.2020 15:02:58
MRUTor
Hallo Martin,
mir scheint, du kennst Hajo noch nicht.
Der schreibt immer diesen vorgefertigten Mist. Lass dich davon nicht beeindrucken. Ich denke, der Typ hat ein bisschen ein Problem im Kopf. Ausser Excel ist da nicht viel mehr drin. Und mit ordentlicher Konversation hat er es gleich gar nicht.
Gruss Tor
AW: ListBox
05.05.2020 14:43:59
Martin
Hallo Marquardt,
die gefilterten Daten sollten in deinem Fall in ein Datenfeld (zweidimensionales Array) eingelesen werden, welches dann als Liste der ListBox übergeben werden kann:
ListBox1.List = arrData()
Leider habe ich jetzt gerade nicht die Zeit den Code ausführlich zu schreiben. Ich sitze in ca. 2 h wieder am Rechner. Sollte dir bis dahin keiner geantwortet haben, schreibe ich dir den passenden Code.
Viele Grüße
Martin
Anzeige
AW: ListBox
05.05.2020 14:47:50
Marquardt
Hallo Martin,
vielen Dank.
Gruß Detlef
AW: ListBox
06.05.2020 11:28:05
Martin
Hallo Detlef,
es hat nun doch etwas länger gedauert, entschuldige bitte. Hier mein Lösungsvorschlag:
 Private Sub CommandButton1_Click()
Dim zelle As Range
Dim strZelle As String
Dim arrData As Variant
Dim j As Integer
With ListBox1
'ListBox leeren
.Clear
'ListBox-Spaltenbreiten definieren
.ColumnWidths = "0 Pt;100 Pt;40 Pt;40 Pt;200 Pt;200 Pt;200 Pt"
End With
Sheets("ME").Select
With Range("E2:E10000" & Range("E6020").End(xlUp).Row)
Set zelle = .Find(TextBox1.Value, LookIn:=xlValues)
If Not zelle Is Nothing Then
strZelle = zelle.Address
Do
'Array dimensionieren
If Not IsArray(arrData) Then
'1. Treffer
ReDim arrData(1 To 15, 1 To 1)
Else
'ab 2. Treffer
ReDim Preserve arrData(1 To 15, 1 To UBound(arrData, 1))
End If
'Spaltendaten der Zeile in Array übertragen
For j = 1 To 15
arrData(j, zelle.Row) = Cells(zelle.Row, j)
Next j
Set zelle = .FindNext(zelle)
Loop While zelle.Address  strZelle
End If
End With
'Array transponiert an ListBox übergeben, wenn Daten vorhanden
If IsArray(arrData) Then
ListBox1.List = Application.Transpose(arrData)
End If
End Sub
Ich habe das Makro nicht getestet und hoffe, dass es auf Anhieb funktioniert. Da ich das Datenfeld (Array) dynamisch erweitere und stets ausschließlich die letzte Dimension eines Array erweitert werden kann, übertrage ich die Daten seitenverkehrt (transponiert). Ich hoffe, dass du es nachvollziehen kannst. Statt der Schleife mit j kannst du natürlich auch jede Spalte einzeln zuweisen, wenn nicht die nebeneinanderliegenden Spalten übertragen werden sollen. Das ginge dann so:
arrData(1, zelle.Row) = Cells(zelle.Row, 5)
...in diesem Beispiel wird in Spalte 1 des Arrays der Inhalt von Spalte 5 der Tabelle übertragen.
Viele Grüße
Martin
Anzeige
AW: ListBox
06.05.2020 13:00:00
Martin
Hallo Detlef,
in meinem Code war ein kleiner Fehler beim Transponieren der Daten, wenn exakt ein Treffer gefunden wurde. So sollte es nun hoffentlich fehlerfrei klappen:
Private Sub CommandButton1_Click()
Dim zelle As Range
Dim strZelle As String
Dim arrData As Variant, arrTmp As Variant
Dim j As Integer
With ListBox1
'ListBox leeren
.Clear
'Anzahl der angezeigten ListBox-Spalten festlegen
.ColumnCount = 15
'ListBox-Spaltenbreiten definieren
.ColumnWidths = "0 Pt;100 Pt;40 Pt;40 Pt;200 Pt;200 Pt;200 Pt"
End With
Sheets("ME").Select
With Range("E2:E10000" & Range("E6020").End(xlUp).Row)
Set zelle = .Find(TextBox1.Value, LookIn:=xlValues)
If Not zelle Is Nothing Then
strZelle = zelle.Address
Do
'Array dimensionieren
If Not IsArray(arrData) Then
'1. Treffer
ReDim arrData(1 To 15, 1 To 1)
Else
'ab 2. Treffer
ReDim Preserve arrData(1 To 15, 1 To UBound(arrData, 1))
End If
'Spaltendaten der Zeile in Array übertragen
For j = 1 To 15
arrData(j, zelle.Row) = Cells(zelle.Row, j)
Next j
Set zelle = .FindNext(zelle)
Loop While zelle.Address  strZelle
End If
End With
'Array transponiert an ListBox übergeben, wenn Daten vorhanden
If IsArray(arrData) Then
If UBound(arrData, 2) = 1 Then
ReDim arrTmp(1 To 1, 1 To 15)
For j = 1 To 15
arrTmp(1, j) = arrData(j, 1)
Next
ListBox1.List = arrTmp
Else
ListBox1.List = Application.Transpose(arrData)
End If
End If
End Sub
Viele Grüße
Martin
Anzeige
AW: ListBox
06.05.2020 21:54:50
Marquardt
Hallo Martin,
danke das Du dich noch gemeldet hast.
Leider funktioniert es nicht. Laufzeitfehler 9
   Else
'ab 2. Treffer
ReDim Preserve arrData(1 To 15, 1 To UBound(arrData, 1))
End If
'Spaltendaten der Zeile in Array übertragen
For j = 1 To 15
gelb  -------->    arrData(j, zelle.Row) = Cells(zelle.Row, j)
Next j
Set zelle = .FindNext(zelle)
Loop While zelle.Address  strZelle
End If
End With
Dieser Bereich wird gelb gekennzeichnet " arrData(j, zelle.Row) = Cells(zelle.Row, j)".
Ich muss mich damit erst einmal beschäftigen. Leder verstehe ich davon zu wenig. Aber ich arbeite daran.
Grüße
Detlef
Anzeige
AW: ListBox
06.05.2020 22:51:13
Martin
Hallo Detlef,
ja, da habe ich gleich zwei blöde Fehler gemacht. Bei komplexeren Makros ist es halt doch besser, wenn man eine Beispielmappe hat und den Code mal durchtesten kann.
Bitte ersetze die gelbe Zeile durch nachfolgende Zeile:
arrData(j, UBound(arrData, 2)) = Cells(zelle.Row, j)
Zudem ist mir auch bei der Erweiterung der zweiten Dimension ein Fehler unterlaufen. Unterhalb meines Kommentars "'ab 2. Treffer" muss stehen:
ReDim Preserve arrData(1 To 15, 1 To UBound(arrData, 2) + 1)
Prüfe mal bitte, ob es jetzt klappt.
Viele Grüße
Martin
Anzeige
AW: ListBox
07.05.2020 18:11:48
Marquardt
Hallo Martin,
es funktioniert und ich möchte mich nochmals bei Dir bedanken.
Gruß Detlef

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige