Thema Datum  Von Nutzer Rating
Antwort
18.05.2021 11:45:45 KaKaKa
NotSolved
18.05.2021 12:32:14 Mase
NotSolved
18.05.2021 12:52:40 KaKaKa
NotSolved
18.05.2021 13:19:55 Trägheit
NotSolved
18.05.2021 13:39:57 KaKaKa
NotSolved
18.05.2021 13:51:09 Trägheit
NotSolved
18.05.2021 14:10:47 KaKaKa
NotSolved
18.05.2021 14:27:51 Trägheit
NotSolved
18.05.2021 14:50:30 KaKaKa
NotSolved
18.05.2021 15:38:43 Trägheit
NotSolved
18.05.2021 15:44:30 Mase
NotSolved
18.05.2021 15:48:17 Trägheit
NotSolved
18.05.2021 17:08:46 KaKaKa
NotSolved
18.05.2021 17:16:14 Gast91440
NotSolved
18.05.2021 19:09:11 xlKing
NotSolved
18.05.2021 19:32:51 Gast75132
NotSolved
18.05.2021 19:51:25 xlKing
NotSolved
18.05.2021 20:07:17 xlKing
NotSolved
19.05.2021 07:12:28 KaKaKa
NotSolved
Blau Frage zu Klassenprogrammierung
19.05.2021 18:30:44 xlKing
NotSolved
20.05.2021 11:59:26 KaKaKa
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
19.05.2021 18:30:44
Views:
507
Rating: Antwort:
  Ja
Thema:
Frage zu Klassenprogrammierung

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
18.05.2021 11:45:45 KaKaKa
NotSolved
18.05.2021 12:32:14 Mase
NotSolved
18.05.2021 12:52:40 KaKaKa
NotSolved
18.05.2021 13:19:55 Trägheit
NotSolved
18.05.2021 13:39:57 KaKaKa
NotSolved
18.05.2021 13:51:09 Trägheit
NotSolved
18.05.2021 14:10:47 KaKaKa
NotSolved
18.05.2021 14:27:51 Trägheit
NotSolved
18.05.2021 14:50:30 KaKaKa
NotSolved
18.05.2021 15:38:43 Trägheit
NotSolved
18.05.2021 15:44:30 Mase
NotSolved
18.05.2021 15:48:17 Trägheit
NotSolved
18.05.2021 17:08:46 KaKaKa
NotSolved
18.05.2021 17:16:14 Gast91440
NotSolved
18.05.2021 19:09:11 xlKing
NotSolved
18.05.2021 19:32:51 Gast75132
NotSolved
18.05.2021 19:51:25 xlKing
NotSolved
18.05.2021 20:07:17 xlKing
NotSolved
19.05.2021 07:12:28 KaKaKa
NotSolved
Blau Frage zu Klassenprogrammierung
19.05.2021 18:30:44 xlKing
NotSolved
20.05.2021 11:59:26 KaKaKa
NotSolved