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

Mehrere Listbox Items ausgeben

Mehrere Listbox Items ausgeben
23.11.2020 15:56:03
Jurica
Hallo zusammen,
ich habe mir alle Tabellenblätter eines Excel Dokuments in einer ListBox (Active X _ Steuerelement) ausgeben lassen. Nun habe ich die Mehrfachselektion aktiviert und anhand der Auswahl kopiere ich die entsprechenden Tabellenblätter, welche in der ListBox selektiert worden in eine neue Excel Mappe. Bei mir tritt leider nun aber das Problem auf, dass nur die erste Selektion kopiert wird und anscheinend taucht der Laufzeitfehler '9' auf welcher besagt, dass der Index außerhalb des gültigen Bereichs ist. Kann mir jemand sagen, was ich ändern muss, damit alle selektierten Tabellenblätter kopiert werden?

Private Sub CommandButton1_Click()
Dim DateiName As String
Dim tabellenblattname As String
Const Pfad As String = "C:\Desktop\"
DateiName = Worksheets("Navigation").Range("A1").Value
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Worksheets(ListBox1.List(i)).Copy
End If
Next
ActiveWorkbook.SaveAs Pfad & DateiName, FileFormat:=-4143
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Listbox Items ausgeben
23.11.2020 16:06:53
ralf_b
der Name des Sheets in der Listbox existiert bestimmt nicht. Oder der Inhalt der Variable Listbox.list(i) ist vielleicht leer.
zusatz
23.11.2020 16:08:05
ralf_b
gibts auch ein Paste? copy - Paste gehört doch immer zusammen.
AW: zusatz
23.11.2020 16:13:23
Mullit
Hallo,
nicht beim Sheets-Copy, bei der Copy-Methode wird automat. ein neues Workbook generiert, wenn die Parameter Before/After nicht gesetzt sind...;-)
Gruß, Mullit
AW: Mehrere Listbox Items ausgeben
23.11.2020 16:18:31
Daniel
Hi
das Problem dürfte sein, dass nach dem Kopieren des ersten Blattes sofort die neue Mappe das aktive Workbook ist und daher VBA dann beim nächsten mal das Worksheet(…) in dieser Mappe sucht und nicht in der Ausgangsmappe!
Das Problem könnte man mit vollständiger Referenzierung (z.B. durch voranstellen von ThisWorkbook lösen).
allerdings ist das weitere Problem, bzw besteht die Frage, ob jedes Blatt in eine eigene Mappe kommen soll oder ob alle Blätter in die selbe Mappe kommen.
Deinem Code nach vermute ich zweieres.
Dh. du müsstest ab dem zweiten zu kopierenden Blatt die Zielmappe vorgeben, ansonsten kommt jedes Blatt in eine eigene Datei.
wenn alle Blätter in sie selbe Datei kommen sollen, würde ich sie zuerst selektieren und dann gemeinsam kopieren:
dim x as boolean
x = true
for i = 0 to listbox1.listcount - 1
if Listbox1.Selected(i) then
thisworkbook.Sheets(Listbox1.List(i)).select x
x = false
end if
next
if not x Then
ActiveWindow.Selected Sheets.Copy
ActiveWorkbook.SaveAs…
End if
das x hat hier zwei funkionen:
1. sorgt es dafür, dass beim ersten Blatt die alte Blattselektion aufgehoben wird und bei allen weitern Blättern nicht, so dass eine Gruppe gehört. ohne dieses x hättest du ansonsten das Blatt, welches bei Makrostart aktiv ist, immer in der Gruppe mit drin, egal ob es ausgewählt wurde oder nicht
2. kannst du damit prüfen, ob überhaupt Blätter selektiert wurden.
wenn das in deinem Makro passiert, speicherst du dir die Originaldatei mit allen Blättern unter dem neuen Namen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige