Hello again,
die Unterschiede zwischen den Programmiersprachen sind oft gravierend. Ich kenne mich z.B. nicht mit C++ aus. Vielleicht kanns du mir da ja auch mal irgendwann helfen. In VBA jedoch gibt es Objekte mit Eigenschaften und Methoden. Der Unterschied besteht darin dass man Eigenschaften mit gleichem Namen sowohl auf der linken wie auch auf der rechten Seite eines Ausdrucks verwenden kann. In VBA wird immer von rechts nach links geschrieben. Daher ist, im Gegensatz zu anderen Programmiersprachen nur ein einzelner = Operator notwendig. Probier mal folgendes in einem Standardmodul in Excel aus:
Sub Test()
Dim meineVariable As String
ActiveSheet.Name = "Test"
meineVariable = ActiveSheet.Name
MsgBox meineVariable
End Sub
Die erste Zeile deklariert eine Variable, die zweite Zeile weist dem aktiven Tabellenblatt den Namen Test zu. Dahinter steckt eine Property Let Anweisung. Die darauffolgende Zeile liest diesen Sheetnamen dann wieder aus und schreibt ihn in die Variable. Das wäre dann die Property Get Anweisung. In beiden Zeilen wird der selbe Bezeichner "Name" verwendet. Es ist also nicht nötig eine Methode wie getName() zu bemühen.
Es gibt auch schreibgeschützte Eigenschaften. Wäre z.B. .Name schreibgeschützt würde der Versuch hier den Namen "Test" zuzuweisen zu einem Laufzeitfehler führen. Solche Eigenschaften kannst du erzeugen indem du nur eine Property Get ohne die zugehörige Property Let Anweisung programmierst.
Einige Eigenschaften können auch Unterobjekte zurückgeben. So gibt es z.B. die Zeile Range("A1").Interior.Color = 255 Die Eigenschaft Interior gibt per Get Methode den Hintergrund eines RangeObjekts als neues Objekt zurück. Diesem Hintergrundobjekt wird dann per let Methode der Wert 255 zugewiesen und die Zelle Rot gefärbt. So kann man sich in VBA mit einem Trennpunkt in einer Zeile zwischen vielen Unterobjekten durchhangeln. Und am Ende steht immer entweder eine Zuweisung oder eben ein Auslesen der Eigenschaft.
sobald du hinter einem Objekt einen Punkt eingibst, öffnet sich eine Liste mit den Eigenschaften und Methoden. Eigenschaften erkennst du an einem Textfenster mit einer Hand davor. Methoden werden durch einen grünen Zylinder dargestellt. Der Unterschied ist deutlich. Bei Eigenschaften kannst du einfach Werte setzen und auslesen. Dabei wird im Hintergrund etwas gemacht, was der schreibfaule User erwartet aber nicht extra, angeben will. (z.B beim Zuweisen der Zahl 255 die Zelle visuell rot gefärbt).
Methoden hingegen führen etwas aus. Also eine kleine Sub die zum Objekt passt. z.B. Range("A1").Select markiert die Zelle A1 als aktive Zelle. hier wird kein zusätzlicher Wert gesetzt oder ausgelesen. Wenn die Methode per Function programmiert wurde kann diese auch z.B. einen Wert zurückgeben, der angibt ob das Ausführen erfolgreich war, oder sogar ein Objekt.
Sheets.Add z.B. ist eine Methode mit der ein neues Sheet angelegt werden kann. Ohne dafür einen Wert zu setzen. Wird dieses aber als Function aufgerufen gibt diese Methode das grade angelegte Sheet zurück, sodass damit dann weitergearbeitet werden kann.
Sub Test2()
Dim meinSheet As Worksheet
Sheets.Add
Set meinSheet = Sheets.Add
meinSheet.Name = "Hallo"
End Sub
PS: die im obigen Topic gezeigte m_version ist lediglich eine interne Variable die den Wert der benutzerdefinierten Eigenschaft aufnimmt um ihn dann später wiedergeben zu können.
OK. Das war jetzt sogar für mich etwas viel Text aber vielleicht hilfts? Hier noch ein Link zum Weiterlesen
Gruß Mr. K.
|