Kurze Antwort: keine.
Lange Antwort: es kommt darauf an.
Wenn Sie sich vollständig qualifizieren Workbooks
, machen Sie es absolut absolut eindeutig, dass sich Workbooks
auf Excel.Application.Workbooks
bezieht. Wenn Sie ein Klassenmodul namens Workbooks
(mit einem PredeclaredId=True
-Attribut) hätten, würde sich ein unqualifiziertes Workbooks
auf dieses Klassenmodul beziehen, und wenn dieses Klassenmodul keine Item
Standardindexereigenschaft hätte, die ein Workbook
Objekt zurückgab, würde es tatsächlich verhindern, dass dieser Code kompilieren:
Debug.Print Workbooks(1).Worksheets(1).Name
Wenn Sie Workbooks
Namen nicht ein Klassenmodul, dann löst VBA die oben Application.Workbooks
.
So in diesem Fall, es spielt keine Rolle.
Es ist nicht immer der Fall ist - nehmen Sie diesen Code als Beispiel:
Range("F12") = 42
, die auf Application.ActiveSheet.Range
sich bezieht, und es können Sie im hinteren Ende beißen. Unqualifizierte Range
Funktionen sind die Quelle von nicht quantifizierbaren Fehlern, weil der Programmierer davon ausgeht, was Blatt ActiveSheet
ist.
Cells(2, 2) = 42
Gleiches hier. Unqualifizierte Verwendungen von Range
und Cells
sind implizite Verweise auf das aktive Blatt, und sie sind eine Plage. Vermeide sie. Code, der diese verwendet, enthält in der Regel auch Select
und Activate
- ein Rezept für eine Katastrophe, die viele Anfänger denken, ist "der richtige Weg", weil Makro-Code verwendet es wie es ist Süßigkeiten.
Vermeiden Sie implizite Verweise auf das aktive Blatt und vermeiden Sie implizite Verweise auf die aktive Arbeitsmappe. Implizite Verweise auf die aktive Anwendung sind jedoch wahrscheinlich in Ordnung. Ein kleines bisschen faul, aber gut.
"Anwendung" ist optional und wird normalerweise weggelassen, ohne dass sich dies auf den Code auswirkt. –