Excel/VBA - Tabellenblatt aus Listbox wählen und mit Daten aus Datenbank füllen

derFREAK27

Member
Registriert
8 Mai 2012
Beiträge
267
Hallo zusammen!

Ich habe ein kleines, bzw. eher größeres Problem:

Ich habe insgesamt fünf Tabellenblätter, Tabelle 1-4 und Datenbank.
Mein Ziel ist es, dass beim Ausführen meines Makros sich eine Listbox (die ist schon fertig, funktioniert und sieht so aus http://bit.ly/TSb1QY) öffnet in der man auswählen kann in welches Tabellenblatt man die Daten aus der Datenbank kopiert.
An und für sich funktioniert das ja auch, d.h. wenn ich ein Tabellenblatt auswähle werden die Daten auch hineinkopiert.
Ich möchte aber, dass man mehrere Tabellenblätter gleichzeitig auswählen kann und diese nacheinander beschrieben werden. Leider bekomme ich einfach diese Schleife nicht hin :cursing:.

Ich bedanke mich schonmal im Voraus für Eure Hilfe! :thumbsup:

LG

:)
 

bemymonkey

Active member
Registriert
21 Juni 2009
Beiträge
9.875
Woran scheitert's denn genau?

Könntest doch z.B. einfach für jede Tabelle ne "Selected" Boolean-Variable machen (welche durch die Listbox geändert wird) und so ähnlich abfragen:

Code:
do while sheetnumber < 5
if currentsheet.selected = true then
copydata()
nextsheet()
loop
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Es scheitert leider an der Schleife, aber ich glaube Dein Code könnte gut funktionieren :thumbup:.
Ich probier's morgen gleich aus, danke Dir!
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Ah, okay danke Dir :).
Wenn die Loopschleife nicht mehr mekert dann läufts :thumbsup:.
Danke Dir für die Hilfe!
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Ich hab jetzt leider ein anderes Problemchen:

Code:
Sub Import()

Dim WorksheetName As Boolean
.....

Do While Sheetnumber < 7
If WorksheetName = True Then
.....
End If

Exit Do

Loop

End Sub

Er überspringt den ganzen Kopiervorgang und springt gleich zum End If.
Woran kann das liegen?
 

bemymonkey

Active member
Registriert
21 Juni 2009
Beiträge
9.875
Step' doch mal mit F8 durch und guck nach, ob Worksheetname tatsächlich = true ist, wenn Du auf der entsprechenden Zeile stehst :)
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Bei True springt er gleich zu End If.
Aber wenn ich WorksheetName = False setzte dann schreibt er mir's in die erste Tabelle, aber die nachfolgenden werden leider immer noch nicht beschrieben.
Die Schleife funktioniert leider nur mäßig, ich habe das "Exit Do" entfernt, dann hängt er sich aber logischerweise auf.
Wie ist es dann machbar, dass er in das nächste Tabellenblatt springt?
 

mythink2009

Member
Registriert
27 Jan. 2009
Beiträge
882
Hallo,
wieso nicht eine (!) Listbox mit Multiselect und folgendem Code, aber statt Msgbox dein Kopiercode.
Oder habe ich was falsch verstanden?


For ausgewählt = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(ausgewählt) = True Then
MsgBox ListBox1.List(ausgewählt)
end if

next
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Wir haben uns gedacht, dass die Listbox (siehe Bild) die wir ausgewählt haben am meisten Übersicht bietet.
Wenn ich Deinen Code auf die zweite ListBox anwende, dann bekomme ich "Laufzeitfehler 424: Objekt erforderlich".
Danke nochmal für Eure Hilfe :)
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Mir ist aber noch was aufgefallen!!!!
Wenn ich eine Tabelle auswähle, auf den "nach rechts" Button klicke, schiebt er sie in die Rechte ListBox hinein und gibt mir in einer MsgBox den Namen der ausgewählten Tabelle an. Wenn ich eine zweite Tabelle auswähle, schiebet er sie auch rüber in die zweite ListBox, aber gibt mir in der MsgBox immer noch den Namen der ersten Tabelle an.
Könnte sich das Problem vielleicht hier verstecken?

EDIT:

Problem mit der MsgBox hab ich gelöst, daran liegts nichts.
Ich versuche jetzt mal die Schleife in den Ok-Button einzubauen
Ich werde sie folgendermaßen programmieren:

Private Sub

Dim z As Integer

For z = 0 To ListBox2.Listcount - 1
MsgBox ListBox2.List(z)
Funktion zum Daten kopieren aufrufen
Funktion.(ListBox.List2(z))
Exit For

Next

End Sub
 
Zuletzt bearbeitet:

mythink2009

Member
Registriert
27 Jan. 2009
Beiträge
882
Code fürs Verschieben der Einträge nach rechts und löschen links (listbox2 ist deine linke, listbox3 deine rechte):

ListBox3.AddItem (ListBox2.List(ListBox2.ListIndex))
ListBox2.RemoveItem (ListBox2.ListIndex)

Code für Abfrage der linken Listbox:
For ausgewählt = 0 To ListBox2.ListCount - 1
MsgBox ListBox2.List(ausgewählt)
next
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Cool, super danke :thumbsup:.
Was mir aber leider weiterhin Probleme bereitet, ist dass wenn ich mehrere Tabellen in der Listbox ausgewählt habe sie nach einander beschrieben werden sollen. Ich bin echt zu doof für sowas :facepalm:.
 

derFREAK27

Member
Themenstarter
Registriert
8 Mai 2012
Beiträge
267
Hey!

Ich habe jetzt Alles hinbekommen und bin super happy :thumbsup:.
Danke Euch nochmal für die Hilfe!

LG
 
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen
Oben