Suche…
Early Binding vs. Late Binding
Bindung ist der Vorgang, bei dem ein Objekt einem Bezeichner oder Variablennamen zugewiesen wird. Eine frühe Bindung (auch als statische Bindung bezeichnet) liegt vor, wenn ein in Excel deklariertes Objekt einen bestimmten Objekttyp aufweist, beispielsweise ein Arbeitsblatt oder eine Arbeitsmappe. Eine späte Bindung tritt auf, wenn allgemeine Objektzuordnungen vorgenommen werden, z. B. die Deklarationstypen Object und Variant.
Frühes Binden von Referenzen einige Vorteile gegenüber dem späten Binden.
- Die frühe Bindung ist betriebsbereit schneller als die späte Bindung während der Laufzeit. Das Erstellen des Objekts mit einer späten Bindung zur Laufzeit erfordert Zeit, die durch die frühe Bindung beim ersten Laden des VBA-Projekts erreicht wird.
- Die frühe Bindung bietet zusätzliche Funktionen durch die Identifizierung von Schlüssel- / Artikelpaaren anhand ihrer Ordinalposition.
- Je nach Codestruktur kann das frühe Binden eine zusätzliche Ebene der Typprüfung bieten und Fehler reduzieren.
- Die Kapitalisierungskorrektur der VBE beim Eintippen der Eigenschaften und Methoden eines gebundenen Objekts ist mit einer frühen Bindung aktiv, jedoch mit einer späten Bindung nicht verfügbar.
Hinweis: Sie müssen dem VBA-Projekt die entsprechende Referenz über den Befehl Tools → References der VBE hinzufügen, um eine frühe Bindung zu implementieren.
Diese Bibliotheksreferenz wird dann mit dem Projekt mitgeführt; Es muss nicht erneut referenziert werden, wenn das VBA-Projekt auf einem anderen Computer verteilt und ausgeführt wird.
'Looping through a dictionary that was created with late binding¹
Sub iterateDictionaryLate()
Dim k As Variant, dict As Object
Set dict = CreateObject("Scripting.Dictionary")
dict.comparemode = vbTextCompare 'non-case sensitive compare model
'populate the dictionary
dict.Add Key:="Red", Item:="Balloon"
dict.Add Key:="Green", Item:="Balloon"
dict.Add Key:="Blue", Item:="Balloon"
'iterate through the keys
For Each k In dict.Keys
Debug.Print k & " - " & dict.Item(k)
Next k
dict.Remove "blue" 'remove individual key/item pair by key
dict.RemoveAll 'remove all remaining key/item pairs
End Sub
'Looping through a dictionary that was created with early binding¹
Sub iterateDictionaryEarly()
Dim d As Long, k As Variant
Dim dict As New Scripting.Dictionary
dict.CompareMode = vbTextCompare 'non-case sensitive compare model
'populate the dictionary
dict.Add Key:="Red", Item:="Balloon"
dict.Add Key:="Green", Item:="Balloon"
dict.Add Key:="Blue", Item:="Balloon"
dict.Add Key:="White", Item:="Balloon"
'iterate through the keys
For Each k In dict.Keys
Debug.Print k & " - " & dict.Item(k)
Next k
'iterate through the keys by the count
For d = 0 To dict.Count - 1
Debug.Print dict.Keys(d) & " - " & dict.Items(d)
Next d
'iterate through the keys by the boundaries of the keys collection
For d = LBound(dict.Keys) To UBound(dict.Keys)
Debug.Print dict.Keys(d) & " - " & dict.Items(d)
Next d
dict.Remove "blue" 'remove individual key/item pair by key
dict.Remove dict.Keys(0) 'remove first key/item by index position
dict.Remove dict.Keys(UBound(dict.Keys)) 'remove last key/item by index position
dict.RemoveAll 'remove all remaining key/item pairs
End Sub
Wenn Sie jedoch die vorzeitige Bindung verwenden und das Dokument auf einem System ausgeführt wird, dem eine der Bibliotheken fehlt, auf die Sie verwiesen haben, treten Probleme auf. Die Routinen, die die fehlende Bibliothek verwenden, funktionieren nicht nur nicht ordnungsgemäß, sondern das Verhalten des gesamten Codes innerhalb des Dokuments wird unregelmäßig. Es ist wahrscheinlich, dass auf dem Computer kein Code des Dokuments funktioniert.
Hier ist spätes Binden von Vorteil. Wenn Sie das Late Binding verwenden, müssen Sie den Verweis nicht im Menü Extras> Verweise hinzufügen. Auf Computern, die über die entsprechende Bibliothek verfügen, funktioniert der Code weiterhin. Auf Computern ohne diese Bibliothek funktionieren die Befehle, die auf die Bibliothek verweisen, nicht, aber der gesamte andere Code in Ihrem Dokument funktioniert weiterhin.
Wenn Sie mit der Bibliothek, auf die Sie verweisen, nicht genau vertraut sind, kann es hilfreich sein, die frühe Bindung beim Schreiben des Codes zu verwenden und dann vor der Bereitstellung auf die späte Bindung umzustellen. Auf diese Weise können Sie während der Entwicklung den IntelliSense und den Objektbrowser der VBE nutzen.