Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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 befüllen

Listbox befüllen
16.11.2017 15:29:50
Marco
Hallo alle zusammen,
ich möchte gerne meine ListBox welche sich in einem UserForm befindet mit Werten aus den Zellen G6 bis X17 befüllen. Die Werte sollen untereinander stehen. Jetzt habe ich versucht das VBA technisch zu lösen, aber die Listbox bleibt leer. Kann mir bitte jemand sagen was ich da vll vergessen habe?
Private Sub ListBox1_Click()
Dim s As String
Dim z As String
For z = 6 To 17
For s = 7 To 24
ListBox1.AddItem Cells(z, s).Value
Next s
Next z
End Sub
Beispiel Datei:
https://www.herber.de/bbs/user/117712.xlsm

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox befüllen
16.11.2017 15:44:54
Peter
Hallo Marko,
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
ListBox1.AddItem Cells(z, s).Value
Next s
Next z
End Sub

Wenn Du die Userform startes wird die Listbox gefüllt.
Viele Grüße
Peter (hpo)
AW: Listbox befüllen
16.11.2017 15:50:21
Marco
Ah jetzt geht es danke Peter. Weißt du wie ich die Leerzeilen weg bringe?
AW: Listbox befüllen
16.11.2017 16:30:09
Peter
Hallo Marco,
hast Du in dem Bereich Leerezeilen drin?
Dann:
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
If Cells(z, s).Value "" then
ListBox1.AddItem Cells(z, s).Value
end if
Next s
Next z
End Sub
Viele Grüße
Peter (hpo)
Anzeige
Code funktioniert, aber
16.11.2017 16:44:40
Marco
Danke Peter.
Ich habe in dem Bereiche mehrere Leerzeilen drin bzw. es sind in dem Bereich sehr viele Zellen leer. Dein Code funktioniert aber super danke.
Ich habe jetzt noch eine andere Frage. Und zwar dachte ich mir das ich den Text aus der ListBox mit der Maus markieren und irgendwo anders wo ich es gerade brauche ob Word oder so hin kopieren kann, aber das geht ja gar nicht. Ich kann immer nur einen Begriff in der ListBox auswählen und den kopieren. Hätte ich etwas anderes als eine Listbox für meinen zweck verwenden müssen bzw. gibt es da was anderes?
Mehrere Einträge aus Listbox auswählen.
16.11.2017 17:09:13
EtoPHG
Hallo Marco,
Selbstverständlich kann man mehrere Einträge einer Listbox markieren und ggf. in das Clipboard für andere Anwendungen kopieren. Dazu muss aber die Eigenschaft MultiSelect entweder auf
fmMultiSelectMulti (Zusammenhängende Bereiche markieren) oder auf fmMultiSelectExtended (Mehrere auch unzusammenhängende Bereich markieren) gesetzt werden.
Gruess Hansueli
Anzeige
AW: Mehrere Einträge aus Listbox auswählen.
16.11.2017 17:33:47
Peter
Hallo Marco,
Füge vor der For schleife
ListBox1.MultiSelect = fmMultiSelectMulti
ein. Dann kannst Du eine mehrfach Auswahl machen.
Gruß
Peter (hpo)
Danke euch beiden sehr hilfreich
16.11.2017 18:25:55
Marco
=)
Ich habe mich geirrt
16.11.2017 20:31:54
Marco
Sorry Jungs,
in der ListBox wird zwar alles aufgelistet aber ich kann die Begriffe nicht einfach mit der Maus markieren und wo anders hin kopieren. Das funktioniert leider nicht. Selbst wenn ich alle einzel auswähle und copy&past mache kommt nichts. Daher habe ich mir gedacht ich mach das mit einer Textbox.
Aber das ist gar nicht so einfach. Ich habe es mal so versucht:
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
If Cells(z, s).Value  "" Then
TextBox1.Value = Sheets("Tabelle1").Cells(z, s) & Chr(10)
End If
Next s
Next z
End Sub
Leider wird mir nur der letzte gefundene Begriff angezeigt und nicht alle untereinander. Wisst ihr vielleicht wie?
Anzeige
AW: Ich habe mich geirrt
16.11.2017 23:33:05
Werner
Hallo Marco,
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
If Cells(z, s).Value  "" Then
If TextBox1 = "" Then
TextBox1.Value = Sheets("Tabelle1").Cells(z, s)
Else
TextBox1.Value = TextBox1.Value & vbLf & Sheets("Tabelle1").Cells(z, s)
End If
Next s
Next z
End Sub
Gruß Werner
Danke
17.11.2017 08:37:22
Marco
Danke Werner jetzt klappt es. In dem Code von dir hat nur noch Multline true gefehlt =)
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
If Cells(z, s).Value  "" Then
TextBox1.MultiLine = True
If TextBox1 = "" Then
TextBox1.Value = Sheets("Tabelle1").Cells(z, s)
Else
TextBox1.Value = TextBox1.Value & Chr(10) & Sheets("Tabelle1").Cells(z, s)
End If
End If
Next s
Next z
End Sub


Anzeige
AW: Ich habe mich geirrt
17.11.2017 08:30:06
Peter
Hallo Marco,
wenn Du eine Textbox verwenden möchtes, mußt Du in den Eigenschaften "MultiLine" auf True stellen.
Im Code vom Werner ist noch ein kleiner Fehler.
Hier der korrekte Code:
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
If Cells(z, s).Value  "" Then
If TextBox1 = "" Then
TextBox1.Value = Sheets("Tabelle1").Cells(z, s)
Else
TextBox1.Value = TextBox1.Value & vbLf & Sheets("Tabelle1").Cells(z, s)
End If
End If
Next s
Next z
End Sub
Viele Grüße
Peter (hpo)
AW: Danke
17.11.2017 08:42:42
Marco
Danke Peter, ich bin drauf gekommen bzw. wusste ich noch das ich bei der listbox auch multline benötige =)
Anzeige
Listbox mit Multiselect und Copy to Clipboard
17.11.2017 10:09:29
EtoPHG
Hallo zusammen,
Hier ist der Code für eine Userform, die ledglich eine Listbox-Control und ein Label-Control enthält:
ListBox1 mit der Eigenschaft MultiSelect = 2 - fmMultiSelectExtended
Die Listbox kann auch mehrere Spalten enthalten. ColumnCount > 1
Mit gehaltener Ctrl-Taste und Mausklick auf die Zeile können mit der Maus einzelne Zeilen dazuselektiert, oder bereits selektierte abgewählt werden.
Wenn in der Listbox Ctrl-C (Copy) gedrückt wird, werden alle selektierten Zeilen (und Spalten) ins Clipboard kopiert.
Label1
Das Label dient nur zur Information und Anzeige von Anzahl Einträgen, Selektierten Einträgen und Copy-Info
Das Label und dazugehörige Codezeilen mit Label1. können auch entfernt werden.
Option Explicit
Dim lbxR As Integer
Dim lbxC As Integer
Dim clipObject As New DataObject
Private Sub ListBox1_Change()
Dim lbxCnt As Integer
With ListBox1
For lbxR = 0 To .ListCount - 1
If .Selected(lbxR) Then lbxCnt = lbxCnt + 1
Next lbxR
End With
Label1.Caption = lbxCnt & " Einträge der Listbox sind ausgewählt"
End Sub
Private Sub ListBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim copyText As String
If (KeyCode = 99 Or KeyCode = 67) And Shift = 2 Then
With ListBox1
For lbxR = 0 To .ListCount - 1
If .Selected(lbxR) Then
For lbxC = 0 To .ColumnCount - 1
copyText = copyText & .List(lbxR, lbxC) & vbTab
Next lbxC
copyText = Left(copyText, Len(copyText) - 1) & vbCrLf
End If
Next lbxR
End With
End If
If copyText  "" Then
clipObject.SetText copyText
clipObject.PutInClipboard
Label1.Caption = "Selection copied to clipboard"
End If
End Sub
Private Sub UserForm_Initialize()
With ListBox1
.Clear
For lbxR = 1 To 10
.AddItem "Eintrag Zeile " & lbxR
For lbxC = 1 To .ColumnCount - 1
.List(lbxR - 1, lbxC) = "Spalte " & lbxC + 1
Next lbxC
Next lbxR
.ListIndex = 0
Label1.Caption = "Listbox enthält " & .ListCount & " Zeilen-Einträge"
End With
End Sub
Spielt mal damit rum ;-)
Gruess Hansueli
Anzeige
AW: Listbox mit Multiselect und Copy to Clipboard
17.11.2017 14:46:09
Marco
Wäre es auch möglich anstatt die Größe der Textbox immer wieder anpassen zu müssen, einen Scrollbalken hinzuzufügen?
wieso machst du immer noch mit Textbox rum? (owT)
17.11.2017 15:49:06
EtoPHG

Weil der text leichter markiert werden kann
20.11.2017 12:01:34
Marco
Mal eine andere Frage, ich habe jetzt die Informationen die in der Textbox stehen sollen in einem anderen Tabellenblatt und dies auch im Code geändert. Aber die textbox ist leer. Wieso das? Fehlt da noch etwas?
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer
For z = 6 To 17
For s = 7 To 24
If Cells(z, s).Value  "" Then
If TextBox1 = "" Then
TextBox1.Value = Sheets("Tabelle1").Cells(z, s)
Else
TextBox1.Value = TextBox1.Value & vbLf & Sheets("Tabelle1").Cells(z, s)
End If
End If
Next s
Next z
End Sub
Der Button ist im Tabellenblatt2 und die Informationen im Tabellenblatt 1
Anzeige
AW: Weil der text leichter markiert werden kann
20.11.2017 12:15:34
Sepp
Hallo Marco,
du musst jedes mal auf die Tabelle verweisen!
Private Sub UserForm_Initialize()
Dim s As Integer
Dim z As Integer

With Sheets("Tabelle1")
  For z = 6 To 17
    For s = 7 To 24
      If .Cells(z, s).Value <> "" Then
        If TextBox1.Value = "" Then
          TextBox1.Value = .Cells(z, s)
        Else
          TextBox1.Value = TextBox1.Value & vbLf & .Cells(z, s)
        End If
      End If
    Next s
  Next z
End With
End Sub


Gruß Sepp

Anzeige
AW: Weil der text leichter markiert werden kann
20.11.2017 13:42:29
Marco
Danke Sepp, das habe ich auch schon ausprobiert, aber die Box ist trotzdem leer. Ich habe mal die Datei hochgeladen
https://www.herber.de/bbs/user/117789.xlsm
AW: Weil der text leichter markiert werden kann
20.11.2017 14:07:42
fcs
Hallo Marco,
du hast in einer Zeile
      If .Cells(z, s).Value  "" Then

den Punkt vor Cells vergessen.
Gruß
Franz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige