title image


Smiley Re: Matrix aus Excel-Zellen m. VBA einer Variable des Typs "Object" zuweisen
Dim x As Range



Set x = Range("A1:C5")





Mit Dim x As Object funktionierts ganz genauso, ist aber wesentlich langsamer.





Bei der Variablendeklaration As Range wird nur einmal die entsprechende TypLib gelesen und die entsprechende vTable erstellt (vTable=interne Tabelle von VB, in der steht, an welcher Stelle welche Funktion ist). Das nennt sich frühes Binden (Early-Binding).

Bei VB wird das beim kompilieren gemacht, bei VBA vermutlich bei der Objekterstellung.



Bei der Deklaration As Object wird bei jedem Zugriff die Stelle der entsprechenden Funktion neu gesucht. Das nennt sich spätes Binden (Late-Binding).



Das ist deshalb so, weil man einer Variablen vom Typ Object jedes verfügbare Objekt zuweisen kann und verschiedenen Objekte haben eben verschiedene Methoden und Eigenschaften. Deshalb muß bei jedem Zugriff die entsprechende Funktion ermittelt werden.

Einer Variablen vom einem spezifizierten Typ (=Klasse) kann man nur Objekte von diesem Typ zuweisen (zB Range), die Zuweisung anderer Objekte führt zu einem Fehler.

Jedes Objekt der gleichen Klasse hat die gleiche vTable, deshalb sind in diesem Fall die vTable-Einträge immer gültig und brauchen nur abgerufen werden.




Gruß
Gaga

___________________________________________________________________

Profilösungen für VB6
wenn nicht anders angegeben, sind alle Codebeispiele nicht getestet, nur getippt


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: