VBA Daten aus ListBox in die Excel Tabelle übertragen


#1
Hallo

Ich habe ListBox mit 2 Spalten und mehreren Zeilen. Mit Betätigung des CommandButtens1 sollten alle Daten gleichzeitig in Excel Tabelle 1 Bereich ab A3:B3 übernommen werden. Ich weiß aber nicht wie das geht.

Ich recherchiere schon seit gestern im Internet aber kann nichts finden.
Ich hoffe jemand könnte mir helfen
 

Anhänge

Zvoni

Erfahrenes Mitglied
#2
Im Click-Event des Commandbuttons

Visual Basic:
For i=0 to Listbox.ListCount-1

Tabelle1.Cells(i+3,1)=ListBox.List(i,0)
Tabelle1.Cells(i+3,2)=ListBox.List(i,1)

Next
Ungetestet. Ist Aircode.
 
#3
Im Click-Event des Commandbuttons

Visual Basic:
For i=0 to Listbox.ListCount-1

Tabelle1.Cells(i+3,1)=ListBox.List(i,0)
Tabelle1.Cells(i+3,2)=ListBox.List(i,1)

Next
Ungetestet. Ist Aircode.
Schade, aber es hat nicht funktioniert. Schreibt ein Fehler. Hier ist meine Code für ein besseres Verständnis :

Private Sub cmdSuchen_Click()
Dim rngCell As Range
Dim strFirstAddress As String
Dim i As Integer

With Worksheets("Bestellungen_Access").Range("A:A")
Me.ListBox1.Clear
Set rngCell = .Find(Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not rngCell Is Nothing Then
strFirstAddress = rngCell.Address
Do
With Me.ListBox1
.ColumnCount = 2

.AddItem


.List(.ListCount - 1, 0) = rngCell.Offset(0, 1).Value
.List(.ListCount - 1, 1) = rngCell.Offset(0, 2).Value
.ColumnWidths = "3cm;3cm"
End With

Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address <> strFirstAddress
Else
MsgBox "Name nicht gefunden", 48
End If
End With
End Sub



Private Sub UserForm_Initialize()

Dim intZeile As Integer
Dim i As Integer

With Sheets("Bestellungen_Access")
For intZeile = 2 To .UsedRange.Rows.Count
If WorksheetFunction.CountIf(Range("A2:A" & intZeile), Cells(intZeile, "A")) = 1 Then
ComboBox1.AddItem .Cells(intZeile, 1).Value

End If
Next intZeile
End With

End Sub
 

tombe

Erfahrenes Mitglied
#4
Unformatierten Code zu lesen macht a) keinen Spaß und b) erkennt man auch nicht so richtig was da geschrieben steht.

Ob es jetzt daran liegt oder ob ich es nur nicht finde, aber wo bitte ist das was Zvoni dir geschrieben hat?

Es funktioniert nämlich!

Außerdem wenn du einfach nur schreibst "...Schreibt ein Fehler...", dann kann man noch nicht einmal raten was die Ursache ist.
 
Zuletzt bearbeitet:

Zvoni

Erfahrenes Mitglied
#5
Ich habe ihn so verstanden, dass der inhalt der listbox auf der userform per buttonclick in das worksheet übertragen werden soll.
Was ich in seinem code erkennen/vermuten kann, ist anscheinend genau anderstherum: werte aus einer range auf dem worksheet per buttonclick in die listbox auf der userform reinschreiben.

Who knows....

Sorry wegen kleinschreibung. Bin auf dem ipad.

Edit: die schnellste/einfachste variante in vba einer mehrspaltigen listbox/combobox werte zuzuweisen, ist ein array der daten zu erstellen, und dann dieses array der list-eigenschaft zuzuweisen.
Visual Basic:
Listbox.list=myarray
 
Zuletzt bearbeitet:

tombe

Erfahrenes Mitglied
#6
Genau das ist es was mich daran auch so verwirrt hat. So wie du habe ich es nämlich auch verstanden.

Könnte natürlich auch der Grund sein warum es bei ihm nicht klappt.
 
#8
Ich entschuldige mich, für meine undeutliche Erklärung. Ich bin im VBA ein Anfänger.
Also, diese Code ermöglicht es mir nach bestimten Daten zu suchen. Und zwar, die Daten werden aus einer Excel-Tabelle "Bestellungen_Access" rausgesucht und in die ListBox1 übernommen. Und jetzt möchte ich alle Spalten aus ListBox1 in eine andere Excel-Tabelle mit betätigung der CommandButten1 zu übernehmen


Private Sub cmdSuchen_Click()
Dim rngCell As Range
Dim strFirstAddress As String
Dim i As Integer

With Worksheets("Bestellungen_Access").Range("A:A")
Me.ListBox1.Clear
Set rngCell = .Find(Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not rngCell Is Nothing Then
strFirstAddress = rngCell.Address
Do
With Me.ListBox1
.ColumnCount = 2

.AddItem


.List(.ListCount - 1, 0) = rngCell.Offset(0, 1).Value
.List(.ListCount - 1, 1) = rngCell.Offset(0, 2).Value
.ColumnWidths = "3cm;3cm"
End With

Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address <> strFirstAddress
Else
MsgBox "Name nicht gefunden", 48
End If
End With
End Sub
 
#10
wäre schon interesssant, ich suche eine ähnliche möglichkeit, nur das ich auf meiner userform Comboboxen, Textboxen und labels habe die alle was anzeigen, diese sollen auf Commandbutton_click diese daten in verschiedene zelle im Worksheet/Exceltabelle1 eingetragen werden. ist das so überhaupt möglich kann dazu überhaupt nix finden.
wer kann mir da weiterhelfen, bin neueinsteiger in VBA hatte das früher mal in der Ausbildung gehabt.