Ich habe eine MS Excel-Arbeitsmappe, die viele Arbeitsblätter enthält.MS Excel "Subskript out of range" beim Kopieren von Arbeitsblättern in neue Arbeitsmappe
Benutzer geben Daten in eines der Arbeitsblätter ein und klicken dann auf eine Schaltfläche, auf der VBA-Code ausgeführt wird. Basierend auf Bedingungen, die von Benutzereingaben abgeleitet wurden, muss ich eine neue Arbeitsmappe erstellen, die Kopien einiger Arbeitsblätter enthält.
Der Code wiederholt sich dann (Schleife) durch die Arbeitsblätter in der Quelle-Arbeitsmappe und die Namen der entsprechenden Arbeitsblätter in einen String hinzufügen ...
Dim worksheetsToCopy As String
worksheetsToCopy = worksheetsToCopy & """" & "Admin Tab" & """" & ", "
Nach der abgeschlossenen Schleife inspizieren ich die Variable mit Debug .print worksheetsToCopy , die mir die folgende Ausgabe in dem Direkt-Fenster gibt: "Admin Tab", "Home Tab", "Armaturenbrett",
Dann I-out Streifen der letzte "" mit
worksheetsToCopy = Mid(worksheetsToCopy, 1, InStrRev(worksheetsToCopy, ",") - 1)
Dann, wenn ich versuche, die Arbeitsblätter in der Variablen worksheetsToCopy mit der folgenden Codezeile enthalten sind, zu kopieren, erhalte ich den Laufzeitfehler 9 - Index außerhalb des Bereichs:
Sheets(Array(worksheetsToCopy)).Copy
Allerdings, wenn ich laufen die gleiche Anweisung aber manuell die Registerkarten Namen in Anführungszeichen und mit Kommas wie unten eingeben, funktioniert es gut:
Sheets(Array("Admin Tab", "Home Tab", "Dashboard")).Copy
Warum erhalte ich den Laufzeitfehler 9 - „Subscript out of range“ Fehler mit der ersten Anweisung.
Was mache ich falsch oder fehlt? Irgendwelche Hilfe wird geschätzt ...
Ihr Code entspricht 'Sheets (Array ("" "Admin Tab"“, "" Home Tab "", "" Dashboard "" ")). Copy', nicht' Sheets (Array ("Admin Tab", "Home Tab", "Dashboard")). Copy'. Siehe Dawid-Antwort für das Erstellen eines Arrays aus einer Zeichenfolge. –