2016-03-29 3 views
1

Könnte jemand erklären, was ist der Punkt des Schreibens Application.Workbooks.Worksheets() ... statt nur Workbooks.Worksheets(), Application weglassen?vba Anwendung Wort als Präfix für Arbeitsmappen verwenden

Welche zusätzlichen Einschränkungen hat das Objekt Workbooks?

+1

"Anwendung" ist optional und wird normalerweise weggelassen, ohne dass sich dies auf den Code auswirkt. –

Antwort

1

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.

+0

Vielen Dank für diese umfassende Antwort. Es ist großartig. Viel gelernt. – Oliver

Verwandte Themen