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
Rot Frage zu Klassenprogrammierung
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
19.05.2021 18:30:44 xlKing
NotSolved
20.05.2021 11:59:26 KaKaKa
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
18.05.2021 19:09:11
Views:
486
Rating: Antwort:
  Ja
Thema:
Frage zu Klassenprogrammierung

Mal sehen ob ich hier auch noch was Sinnvolles beitragen kann. Wie ich vor längerer Zeit schon mal schrieb, hat jeder Programmierer seinen ganz eigenen Stil. In diesem Sinne kannst du natürlich das Zuweisen und Auslesen über Methoden machen. Da hast du Recht. Im Prinzip ist das Wurst. Aber intuitiv ist das nicht. Denn VBA lebt hauptsächlich von Eigenschaften. Diese werden als Ausdruck interpretiert. also z.B. mit = zugewiesen. Der Unterschied wurde dir von Trägheit bereits deutlich gemacht. Eine übliche Zuweisung erfolgt z.B. über myObject.Freetext = "Hallo", Auslesen und schreiben in eine Variable: Variable = myObject.Freetext

Natürlich kann man für das Auslesen auch eine Function verwenden, dann sind aber die Klammern etwas lästig Variable = myObject.getFreetext() und beim Zuweisen muss man bei deinem Stil darauf achten dass das = weggelassen wird: myObject.setFreetext "Hallo" Nur ist das Hallo hier dann ein Attribut der Zuweisungsmethode und nicht der wert einer Eigenschaft.

Das kann für NichtVBA-Profis schnell zur Falle werden und in Laufzeitfehlern münden. Denn so ein = ist schnell geschrieben. Dass das in deinem Fall dort nicht hingehört kann leicht übersehen werden.

Richtig spannend wird es aber dann, wenn du einen Mix aus beiden Varianten verwendest. Beispiel:

Private m_version As Integer

Public Property Get Version() As Integer
  Version = m_version
End Property

Friend Sub Version(Wert As Integer)
  m_version = Wert
End Sub

Mit diesem Code kannst du eine schreibgeschützte Eigenschaft erzeugen, die zwar innerhalb deines Projekts (also nur von dir) beschrieben werden kann. Aber von anderen Projekten aus nur ausgelesen werden kann. Schau dazu einfach mal in den Objektkatalog da gibt es viele schreibgeschützte Eigenschaften.

PS: Im falle von Version, kann man die Zuweisung natürlich auch direkt über Class_Initialize machen. Aber manchmal ist es halt nötig die Zuweisung zu einer schreibgeschützen Eigenschaft erst während der Laufzeit eines Makros zu erledigen.

Gruß Mr. K.

@Schreibmuffel: Ich hoffe ich habe jetzt nicht den Textrahmen gesprengt wink

 


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
Rot Frage zu Klassenprogrammierung
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
19.05.2021 18:30:44 xlKing
NotSolved
20.05.2021 11:59:26 KaKaKa
NotSolved