Der Hauptgrund, niemals Select oder Activesheet zu verwenden, liegt darin, dass die meisten Leute mindestens ein paar andere Arbeitsmappen geöffnet haben (manchmal auch Dutzende), wenn sie Ihr Makro ausführen, und wenn sie während der Ausführung Ihres Makros von Ihrem Blatt wegklicken und auf ein anderes geöffnetes Buch klicken, ändert sich das "Activesheet", und die Zielarbeitsmappe für einen unqualifizierten "Select"-Befehl ändert sich ebenfalls.
Im besten Fall stürzt Ihr Makro ab, im schlimmsten Fall schreiben Sie Werte oder ändern Zellen in der falschen Arbeitsmappe und haben keine Möglichkeit, diese Änderungen rückgängig zu machen.
Ich habe eine einfache goldene Regel, die ich befolge: Ich füge Variablen mit den Namen "wb" und "ws" für ein Workbook-Objekt und ein Worksheet-Objekt hinzu und verwende diese immer, um auf mein Makrobuch zu verweisen. Wenn ich auf mehr als ein Buch oder mehr als ein Blatt verweisen muss, füge ich weitere Variablen hinzu.
Zum Beispiel,
Dim wb as Workbook
Dim ws as Worksheet
Set wb = ThisWorkBook
Set ws = wb.sheets("Output")
Der Befehl "Set wb = ThisWorkbook" ist absolut entscheidend. "DieseArbeitsmappe" ist ein spezieller Wert in Excel, der die Arbeitsmappe bezeichnet, in der sich Ihr VBA-Code befindet. läuft derzeit von . Eine sehr hilfreiche Abkürzung, um Ihre Workbook-Variable mit zu setzen.
Nachdem Sie das am Anfang Ihres Unterverzeichnisses getan haben, könnte die Verwendung nicht einfacher sein: Verwenden Sie sie einfach überall dort, wo Sie "Auswahl" verwenden würden:
Um also den Wert der Zelle "A1" in "Ausgabe" in "Hallo" zu ändern, anstatt:
Sheets("Output").Activate
ActiveSheet.Range("A1").Select
Selection.Value = "Hello"
Das können wir jetzt tun:
ws.Range("A1").Value = "Hello"
Das ist nicht nur viel zuverlässiger und weniger absturzgefährdet, wenn der Benutzer mit mehreren Tabellenkalkulationen arbeitet; es ist auch viel kürzer, schneller und einfacher zu schreiben.
Ein zusätzlicher Bonus: Wenn Sie immer Wenn Sie Ihre Variablen "wb" und "ws" nennen, können Sie den Code von einem Buch in ein anderes kopieren und einfügen, und er funktioniert in der Regel mit minimalen Änderungen, wenn überhaupt.