Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
216to220
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
216to220
216to220
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Property Set - wofür?

Property Set - wofür?
10.02.2003 22:24:51
Arno
Hallo VBA-Experten,

ich platze direkt mit meiner Frage raus:

Wofür braucht man die Property-Methoden? (Und warum findet man sie so oft in Klassenmodulen?)
(also schon fast zwei Fragen)

Was ich mir von den Property-Methoden erhofft hatte, war so etwas wie:

Commandbutton1.Right (also, dass man dem Ding eine Eigenschaft für den rechten Rand zuweist)
Dafür finde ich es aber mittlerweile einfacher, eine Funktion zu schreiben

Function RechterRand (obj as object) as single
RechterRand = obj.Left + obj.Width
End Function

Ansonsten finde ich Beispiele, wie man z.B. das "X" in einer Userform unterdrücken kann, oder wie man eine Userform in ihrer Grösse

veränderbar macht (z.B. https://www.herber.de/forum/archiv/148to152/t148266.htm), die alle folgendermassen laufen:

In einem Klassenmodul steht:

Public Property Set Form(oForm As Object)
If Val(Application.Version) < 9 Then
hWndForm = FindWindow("ThunderXFrame", oForm.Caption) 'XL97
Else
hWndForm = FindWindow("ThunderDFrame", oForm.Caption) 'XL2000
End If
SetFormStyle
End Property

... und API-Deklarationen und weiterer Code für "SetFormStyle" usw.

In dem Code der Userform steht:

Dim oFormChanger As New CFormChanger

Sub UserForm_Initialize()
Set oFormChanger.Form = Me
End Sub


Funktioniert!

Aber es geht auch, wenn man

im Klassenmodul die "Property Set"-Zeile in
"Public Sub FormChange(oForm As Object)"
umwandelt und im UserFormCode die aufrufende Zeile in
"FormChange Me"
umwandelt,
und schliesslich das Klassenmodul in ein ganz normales CodeModul kopiert.

Und es funktioniert auch! Also, Fazit, nix mit Property, das ganze in einem normalen Modul, und wie eine ganz normale Sub-Methode aufrufen. Ich finde das übersichtlicher.

Klar, in Klassenmodulen kann man Controls, die man während der Laufzeit in eine Userform einfügt, Ereignisse zuweisen. Das finde ich toll!

Aber ansonsten habe ich noch keinen Sinn gefunden, warum die Dinger so oft verwendet werden. Und nun frage ich mich - entgeht mir da ein Programmiertrick?
Wo liegt der Vorteil von "Property"-Verwendungen?

Hoffentlich versteht man das, was ich hier zu beschreiben versuche, und hoffentlich kann mir jemand eine Leuchte aufgehen helfen.

Danke und mfG,

Arno.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Property Set - wofür?
11.02.2003 09:02:52
Peter Haserodt

Hallo Arno,
ja wofür eigentlich ???
Tatsächlich sind Klassenmodule in VBA ein Stiefkind.
Michael Kofler schreibt in seinem Buch zu VBA für E97 dazu,
dass aus Ermangelung der wirklichen Vorteile von Klassen
(z.B. RaiseEvent und Enum) diese in VBA eher eine untergeordnete Rolle spielen. (Im Gegensatz zu VB)

Letztendlich sind Klassen zur Kapselung von Code gedacht.
Ich erstelle ein "eigenes Objekt" dessen Eigenschaften und Methoden ich über seinen Namen ansprechen kann.
Habe ich es vernünftig erstellt, ist es sehr einfach portierbar/wiederverwendbar.

In VB Literatur (z.B. auch von Kofler oder von Peter Mondajemi) findest du mehr Informationen.
Vielleicht auch ein Google nach VB+Klassen, bzw. Visual Basic+Klassen oder Visual Basic + Classmodule oder ...

Mho werden Klassen z.T. auch überbewertet.

Aber die Strukturen von Klassen (Properties etc... sind in VB (NICHT VBA) ziemlich wichtig, z.B. um eigene Steuerelemente oder dlls zu erzeugen)


Vielleicht hilft dir das ein wenig weiter.

Gruss Peter

www.haserodt.de

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige