Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1396to1400
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
Inhaltsverzeichnis

Eigenschaften einer klasse

Eigenschaften einer klasse
27.12.2014 21:51:25
Barbara
Hi
ich versuche gerade, hinter das Geheimnis von Klassenmodulen zu kommen.
Was bedeuten die einzelnen Elemente in diesem Ausdruck?
ActiveCell.Offset(-1, 0).Value
ActiveCell ist wohl ein Objekt einer Klasse.
Ist diese Klasse bereits angelegt oder ist sie immer vorhanden?
Was ist Offset? Ist das Funktion?
Gibt es dazu einen Code zum Nachvollziehen?
Value: Das ist vermutlich eine Eigenschaft.
Gibt es dazu einen Code zum Nachvollziehen?
LG,
Barbara

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eigenschaften einer klasse
27.12.2014 23:34:55
{Boris}
Hi Barbara,
Du gibst an "Basiskenntnisse in VBA" - was sind das für Kenntnisse?
Willst Du wirklich was über "Klassen" wissen? Weißt Du bereits, was Objekte, Eigenschaften, Methoden sind?
VG, Boris

AW: Eigenschaften einer klasse
27.12.2014 23:50:42
Barbara
Was dieser Befehl bewirkt und tut, kann ich nachvollziehen.
Ja, ich weiß was Objekte, Eigenschaften, und Methoden sind. Ich habe schon einiges darüber gelesen. Nur Nur, wenn ich diese Zeile lese, versuche ich, sie in diesem Sinne zu verstehen.

AW: Eigenschaften einer klasse
28.12.2014 10:25:41
Beverly
Hi Barbara,
ActiveCell -&gt Zelle in der der Cursor steht; bezieht sich also auf das Objekt aktive Zelle der Klasse Arbeitsblatt
.Offset(-1, 0) -&gt Zelle 1 Zeile oberhalb und 0 Spalten links/rechts der angesprochenen Zelle, Offset gibt also den Zeilen-/Spaltenversatz in Relation zur angesprochenen Zelle wieder.
Beispiel - aktive Zelle B5, dann ist ActiveCell.Offset(-1, 0) die Zelle B4
.Value -&gt Wert der in der Zelle steht. Dies ist die Standardeigenschaft der angesprochenen Zelle und kann in vielen Fällen weggelassen werden, es sei denn, man will sich tatsächlich auf diese und keine andere Eigenschaft der Zelle beziehen. Es ist aber keineswegs ein Fehler, wenn generell .Value angegeben wird, wenn man sich auf den Zellwert beziehen will.


Anzeige
AW: Eigenschaften einer klasse
28.12.2014 11:13:21
Barbara
Hallo Karin,
Danke für Deine Antwort.
"ActiveCell ... bezieht sich also auf das Objekt ..."
Auf welches Objekt bezieht es sich? Ist es also nicht selbst ein Objekt?
Und was ist dann Offset? Eine Prozedur?
Gibt es dazu einen VBA-Code?
Liebe Grüße,
Barbara

AW: Eigenschaften einer klasse
28.12.2014 11:24:37
Matthias
Hallo Barbara
Das steht doch aber auch alles in der ExcelHilfe.
Auszugsweise:
ActiveCell-Eigenschaft
Diese Eigenschaft gibt ein Range-Objekt zurück, das die aktive Zelle entweder im aktiven Fenster (das Fenster im Vordergrund) oder im angegebenen Fenster repräsentiert. Wird im betreffenden Fenster kein Tabellenblatt angezeigt, führt diese Eigenschaft zu einem Fehler. Schreibgeschützt.


Offset-Eigenschaft (Range-Objekt)
Gibt ein Range-Objekt zurück, das einen Bereich darstellt, der gegenüber dem angegebenen Bereich versetzt ist. Schreibgeschützt.
Syntax
Ausdruck.Offset(RowOffset, ColumnOffset)
Ausdruck Ein erforderlicher Ausdruck, der ein Range-Objekt zurückgibt.
RowOffset Variant optional. Die Anzahl der Zeilen (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach unten, bei negativen Werten ein Versatz nach oben. Der Standardwert ist 0.
ColumnOffset Variant optional. Die Anzahl der Spalten (positiv, negativ oder 0 (Null)), um die der Bereich versetzt werden soll. Bei positiven Werten erfolgt ein Versatz nach rechts, bei negativen Werten ein Versatz nach links. Der Standardwert ist 0.
Das hat Karin aber schon erklärt(Offset)


Gruß Matthias

Anzeige
AW: Eigenschaften einer klasse
28.12.2014 11:33:55
Beverly
Hi Barbara,
ich verstehe dein Problem nicht: "... bezieht sich auf das Objekt" = "ist das Objekt". Der Ausdruck ActiveCell bezieht sich auf das Objet ActiveCell.
Alles in Excel sind Objekte und sie gehören zu einer (bestimmten) Klasse - Klasse ist also der Oberbegriff bzw. der "Container", in welchem die Objekte zusammengefasst bzw. enthalten sind.
- die Arbeitsmappe ist die Klasse, in der die Arbeitsblätter(-Objekte) enthalten sind
- das Arbeitsblatt ist die Klasse, in der Zellen(-Objekte), Steurelemente(-Objekte) usw. enthalten sind
Alle Klassen und alle Objekte haben Eigenschaften. Das Objekt Zelle hat z.B. die Eigenschaften Wert, Füllfarbe, Schriftfarbe usw.
Offset dagegen ist ebenfalls ein Objekt, welches mit dem Objekt ActiveCell verbunden ist.


Anzeige
Die Ausdrucksweise 'bezieht sich auf 1 Objekt'...
28.12.2014 14:20:16
Luc:-?
…ist korrekt, Barbara,
da ein PgmCode naturgemäß keine Objekte enthalten, sondern sich nur auf sie beziehen kann. Hier kommt, auch, wenn man mal vereinfachend von dieser Exaktheit absieht, aber noch hinzu, das das eigentliche Objekt ein Range eines Worksheets des Workbooks einer Instanz der Application Xl ist, wobei bei allen Objekten deren (vermutete interne) Eigenschaft Activated True ist.
Einem Objekt können mittels Pkt-Verbinder bestimmte seiner Eigenschaften und Methoden hinzugefügt wdn, wofür im ObjektManager des VBEditors unterschiedliche Icons benutzt wdn. Eine hinzugefügte Eigenschaft (Property) kann dabei ein neues, nachgeordnetes Objekt begründen. Mitunter können diese nachgeordneten Objekte auch direkt angesprochen wdn, was sowohl bei ActiveCell als auch Offset der Fall ist. Da stets nur eine einzige Zelle einer Application-Instanz die aktive sein kann, handelt es sich hierbei also um eine objekt-begründende/-identifizierende Eigenschaft der Application.
Gleiches gilt übrigens für ThisCell, nur darf hier das übergeordnete Objekt beim Aufruf nicht fehlen und diese Property kann nur im Zusammenhang mit UDFs in ZellFmln eingesetzt wdn (entspricht hier Application.Caller, bezogen auf eine Zelle).
PgmBsp für beide Objekte:
Sub UDF_Eintrag()
ActiveCell.Formula = "=UseThisCell()"
End Sub
Function UseThisCell()
UseThisCell = Application.ThisCell.AddressLocal(0, 0)
End Function
Offset ist ebenso wie Resize eine objektbegründende Eigenschaft. Beide führen zur Wahl eines neuen Objekts, verschoben im 1. oder erweitert/eingeschränkt im 2.Fall.
Zu allen diesen Standard-Klassen und ihren Objekten nebst Eigenschaften und Methoden gibt's keinen originären VBA-Code, denn sie sind in MSOffice-Bibliotheken (idR .dll) abgelegt. Man kann die „Endprodukte“ aber, wie von MS vorgesehen, in eigenen VBA-Prozeduren anwenden… ;-)
Gruß, Luc :-?

Anzeige
AW: Die Ausdrucksweise 'bezieht sich auf 1 Objekt'...
28.12.2014 15:55:18
Barbara
Hallo Luc-?
Danke für Deine ausführliche Antwort. Leider verstehe nicht nur die Hälfte davon, und das ist schon nicht uninteressant.
Ich habe im Internet einige Beispiele mir angesehen, in denen Klassen erstellt werden, mit Funktionen, Eigenschaften, Let und Get, usw. Dann werden Module kreiert und die Funktionsweise der eigenen Klassenobjekte angewendet.
Jetzt versuche ich, die oben genannten Zeile damit in Zusammenhang zu bringen und Parallelen zu finden. Was ist in diesem Falle ein Objekt, oder ist das eine Methode?

Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
28.12.2014 17:42:53
Luc:-?
…in Verbindung zu bringen, ist nicht ganz einfach, Barbara,
da es dafür kein „Anschauungsmaterial“ gibt und ihre Pgmmierung ja wohl auch nicht in VBA erfolgt ist. Vgln kannst du aber mit den vorgefertigten Dokument-Klassen-Modulen der Mappe und der Blätter, sowie von UserForm(ularen/)s für Ereignisse derselben (und ihrer Elemente).
Falls du auf der Strecke etwas üben willst, kannst du erst mal die Bspp in der VBE-Hilfe benutzen, u.a. auch mal das Dokument-Klassen-Modul einer Application-Instanz anlegen (wird auch dort erläutert), um deren Ereignisse nutzen zu können.
In einem KlassenModul kannst du ansonsten Let/Set/Get Property-Prozeduren, aber auch Methoden (wie Functions) einsetzen.
Ich bemerkte ja bereits, dass dein Bsp nur aus Objekt-Referenzen besteht (mit Ausnahme von Value). Vor dem 1.Pkt steht immer ein Objekt, nach einem Pkt eine Eigenschaft (oder Methode), wobei manche Eigenschaften selbst wieder Objekte begründen/darstellen/referenzieren. In diesem Fall haben sie zumeist selbst wieder Eigenschaften, die per Pkt nachgestellt wdn können. Das zeigt der VBE-IntelliSense aber nicht in jedem Fall an (hier hilft dann idR ein zwischen­geschaltetes Set). Ist das nicht der Fall, steht nach dem letzten Pkt eine reine Eigenschaft. Nur eine solche kann bspw einer Variablen direkt (Let-Anweisung, idR ohne Let benutzt) zugewiesen wdn. Ganze Objekte hingegen können einer ObjektVariablen nur per Set-Anweisung übergeben wdn (d.h., ein/e Bezug/Referenz auf sie).
ActiveCell.Offset(-1, 0) repräsentiert/referenziert demzufolge ein ganzes Objekt. Wird ihm/es aber mit einer Let-Anweisung eine/r Variable/n zugewiesen, wird seine reine (Standard-)Eigenschaft Value benutzt.
ActiveCell entspricht also einer bestimmten Zelle, während ihre Eigenschaft Offset eine bestimmte Vorgänger- bzw NachfolgerZelle derselben repräsentiert (primär als Objekt!). ActiveCell.Offset(0, 0) entspricht dabei ActiveCell selbst, ist nur eine weitere Referenz auf dieses Objekt. Also ist das in jedem Fall ein Range-Objekt, dem alle dafür vorgesehenen Eigenschaften zugeordnet wdn können.
Luc :-?

Anzeige
AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
28.12.2014 18:59:54
Barbara
Habe wieder nur die Hälfte verstanden. Ich glaube, dass ich mich noch einmal im meine Unterlagen vertiefen muss.
Kann man das so sagen?
ActiveCell ist also ein Range-Objekt, also ein Objekt der Klasse Range.
ActiveCell.Offset(-1, 0) ist auch ein Range-Objekt.
Was ein Range-Objekt ist, werde ich dann sicher irgendwo nachlesen können.
LG,
Barbara

AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
28.12.2014 20:54:58
{Boris}
Hi Barbara,
Matthias hat es doch gepostet:
ActiveCell ist eine Eigenschaft (des Application-Objekts), die ein Range-Objekt zurückgibt.
Zum Thema "Klassen" lies Dir doch mal das Tutorial von Peter Haserodt auf der Seite Seite Online-Excel.de durch (kann den Link grad nicht posten, da die Seite down ist...). Dann wird vielleicht einiges klarer.
VG, Boris

Anzeige
Danke das wenigstens Du mich gelesen hast :-) owT
28.12.2014 21:28:06
Matthias

Das hatte ich auch getan, Matti! ;-/ Gruß owT
29.12.2014 01:56:07
Luc:-?
:-?

:-) Gruß owT
29.12.2014 11:12:14
Matthias

AW: :-) Gruß owT
29.12.2014 18:02:54
Barbara
OK, ActiveCell ist eine Eigenschaft.
Ist es eine Eigenschaft eines Objekts?
Wenn ja,
- Wie heißt das Objekt oder wie könnte es heißen?
- Zu welcher Klasse gehört dieses Objekt?
Vielleicht wurden meine Fragen schon irgendwo mal beantwortet. Wenn das so wäre, dann habe ich vielleicht nicht alles auf Anhieb verstanden.
LG von der Skipiste,
Barbara

Anzeige
AW: Danke das wenigstens Du mich gelesen hast :-) owT
29.12.2014 18:10:51
Barbara
Es tut mir leid, dass ich nicht gleich geantwortet habe. Auch ich habe dich gelesen, und zwar mit großem Interesse und gebotenem Respekt. Leider bin ich zur Zeit etwas abgelenkt, und kann deswegen nicht immer gleich antworten. Bitte um Verständnis.

Die Hälfte ist doch schon was, ...
29.12.2014 02:00:28
Luc:-?
…Barbara… ;-)
Ein Range-Objekt ist ein ZellBereich aus mindestens einer Zelle. Allerdings gibt's auch noch andere Range-Anwendungen (nicht nur in Word, auch in Xl)!
Morrn, Luc :-?

AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
29.12.2014 09:04:53
Beverly
Hi Barbara,
meinen Beitrag bezüglich Objekte hattest du geelesen?


Anzeige
AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
29.12.2014 18:03:41
Barbara
Ja, Karin, natürlich habe ich deine Beiträge gelesen. Du schreibst: "Der Ausdruck ActiveCell bezieht sich auf das Objekt ActiveCell. Alles in Excel sind Objekte und sie gehören zu einer (bestimmten) Klasse. "
Zu welcher bestimmten Klasse gehört das Objekt "ActiveCell"? Kann man ein eigenes Objekt dieser Klasse erstellen? Wenn ja, wie lautet die Codezeile dazu?
LG vom 5-Uhr_Tee,
Barbara

AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
29.12.2014 19:36:43
Beverly
Hi Barbara,
zu welcher Klasse das Objekt ActiveCell gehört, hatte ich doch bereits geschrieben - zur Klasse Arbeitsblatt.
Man kann selbstverständlich auch eigene Klassen erstellen und ihnen definierte Eigenschaften zuweisen und Events programmieren. Ansprechen kann man die Eigenschaften bzw. programmieren kann man die Events dann in einem Klassenmodul für diese Klasse.
Hier ein Beispiel für eine eigene Klasse vom Typ Arbeitsblatt und mit Namen clsTabellen:
dazu folgenden Code ins Workbook_Open-Ereignis, um beim Öffnen die Klasse zu erstellen (initialisieren):
Option Explicit
Private Sub Workbook_Open()
TabellenInit
End Sub
In ein allgemeines Modul diesen Code - er initialisiert die Klasse, trägt im Beispiel also alle Objekte Arbeitsblatt der Arbeitsmappe in die Klasse ein:
Option Explicit
Public arrTabellen() As New clsTabellen
Sub TabellenInit()
Dim wskTab As Worksheet
Dim intTabellen As Integer
intTabellen = 1
' Schleife über alle Tabellen
For Each wskTab In Worksheets
ReDim Preserve arrTabellen(1 To intTabellen)
' jedes Tabellenblatt in die Klasse eintragen
Set arrTabellen(intTabellen).clTab = wskTab
intTabellen = intTabellen + 1
Next wskTab
End Sub
In einem z.B. als clsTabellen benannten/definierten Klassenmodul spricht man dann die Eigenschaften und Events der betreffenden Klasse an - dazu z.B. folgenden Code in das Klassenmodul clsTabellen, mit dem das Worksheet_Change-Ereignis der Klasse clsTabellen ausgeführt wird:
Option Explicit
Public WithEvents clTab As Worksheet
Private Sub clTab_Change(ByVal Target As Range)
If Target.Address = "$B$10" Then MsgBox "Ich reagiere auf Eingabe in der Tabelle1"
End Sub


Anzeige
AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
29.12.2014 22:36:02
Barbara
Hallo Karin,
danke für Dein Beispiel, und Deine Erläuterungen.
Du schreibst: "dazu folgenden Code ins Workbook_Open-Ereignis, um beim Öffnen die Klasse zu erstellen (initialisieren):"
Ist es nicht so, dass an dieser Stelle nicht eine Klasse erstellt wird, sondern eine Instanz der Klasse?
Denn das sollte ja immer mit anderem Namen beliebig oft gehen, wobei aber die Klasse nie erstellt wird, sondern einfach da ist, meiner Meinung nach.
Ich frage das nur aus Gründen der Verständlichkeit und nicht weil ich kleinlich sein will.
Kann man sagen, dass arrTabellen zur Klasse clsTabellen gehört, in dem selben Sinne wie das Objekt ActiveCell zur Klasse Arbeitsblatt gehört?
Dein Beispiel habe ich ausprobiert und vermute Folgendes:
Ist wskTab ein Objekt der Klasse Worksheet, das beim ersten Ausführen der Zeile
"For Each wskTab In Worksheets"?
initiiert wird?
Aber was wäre dann Worksheets?
Ein Objekt? Eine Klasse?
Jedenfalls muss es was sein, was schon immer da war, weil es nirgends angelegt wurde.
OK, jetzt muss ich mich langsam losreißen, ich bin Euch für jede Antwort dankbar, lese sie auch (die letzte ca. 4 Stunden lang), aber kann nicht immer gleich antworten. Ich weiß nicht, wie lange man sich in diesem Forum mit den Antworten Zeit lassen kann und versuche mich zu beeilen.
LG, Barbara

Zeit: 6 Tage ab Datum ErstPosting, ...
29.12.2014 23:44:23
Luc:-?
…Barbara;
ansonsten glaube ich, dass Beverly etwas übers Ziel hinausgeschossen ist, denn dir geht's ja wohl immer noch ums GrundVerständnis. Das, was dir jetzt alles geantwortet wurde (auch von mir), könnte durchaus dein Verständnis überfordern.
Ja, alle deine neuen Fragen wurden schon von uns beantwortet, aber du scheinst immer noch im Dunkel herumzuirren. Ich hatte mir seinerzeit als ziemlich Erstes das ObjektModell von Xl angesehen, da wdn die allermeisten Zusammenhänge deutlich.
Im Grunde genommen kann man sich Xl auch wie eine relationale Datenbank vorstellen, denn die weist eine ähnliche Struktur auf. Alle Begriffe (Identifikatoren), die in einer DB in Relation zueinander stehen, sind in Xl-VBA Objekte, die bestimmten Klassen angehören. In einer DB können selbständige Identifikatoren auch bestimmten anderen als DatensatzElemente beigegeben wdn. Dadurch können die verschiedensten Datengruppierungen bei der DB-Auswertung erreicht wdn, denn daneben gibt's noch einfache Daten, die bestimmten IdentifikatorTypen zugeordnet sind. Vgln mit Xl-VBA entspräche der HptIdentifikator eines Datensatzes dem HptObjekt, alle anderen Elemente desselben Eigenschaften dieses HptObjekts, die, sofern sie in anderem Zusammenhang als selbständige DB-Identifikatoren resp in Xl-VBA als eigene Objekte auftreten, auch ebensolche sind und wieder eigene Eigenschaften haben können.
Das alles überschneidet sich in Xl vielfältig (ähnlich besagter DB), so dass ActiveCell zwar eine Eigenschaft der Application ist (quasi ein Element im „HptDatensatz von Xl“), aber letztlich ein Objekt des Typs Range darstellt, das der Klasse Worksheet nachgeordnet ist. Die entsprd objekt-begründende Eigenschaft dieser Objekte heißt dann auch Range. ActiveCell ist insofern sowohl Eigenschaft als auch Objekt. Als Eigenschaft gehört es zu Application, als Objekt ist es Worksheet nachgeordnet, das sein Parent ist. Offset dagegen verweist auf ein gleichartiges, aber nicht identisches Objekt mit derselben Eltern-Kind-Beziehung.
Damit habe ich auch zum Ausdruck bringen wollen, dass in Xl-VBA durchaus nicht alles ein Objekt ist. Es gibt noch viele Eigenschaften, die kein Objekt begründen, ebenso wie eine DB nicht nur aus Identifikatoren besteht.
Es gibt in VBA auch noch selbständige StrukturElemente, die aus dem Xl-ObjektModell herausfallen und wohl deshalb in VBA keine Objekte sind wie bspw ein (klassisches) VBA-Array. In anderen PgmierSprachen sind Arrays idR auch Objekte.
Aber ich glaube, das war jetzt auch wieder zuviel. Sieh dir das ObjektModell an und vertiefe dich in die VBA-Grundlagen bevor du dich eingehender mit Klassen und ihren Möglichkeiten beschäftigst! ;-)
Gruß, Luc :-?

AW: Zeit: 6 Tage ab Datum ErstPosting, ...
30.12.2014 10:33:18
Beverly
Hi Barbara,
ich würde annehmen, dass du von den bisherigen langatmigen Erläuterungen meines Vorredners erschlagen und außerdem weit über das Ziel deiner eigentlichen Frage zum Thema eigene Klasse vs. Standard-Klassen hinaus bombardiert wurdest.
In meinem letzten Beitrag habe ich versucht, mit möglichst kurzer Beschreibung ganz konkret auf deine Frage einzugehen.


Langatmig ist das Ggteil von kurzatmig, oder? ;-]
30.12.2014 13:11:30
kurzatmig,
Vielleicht kennt sich Barbara ja mit DBn besser aus…
Luc :-?

AW: Langatmig schreibt derjenig seine Beiträge,...
30.12.2014 13:19:46
Beverly
...der nicht in der Lage ist, sich prägnant und auf den Punkt gebracht auszudrücken.


Das kannst du natürlich, weshalb du ja auch ...
30.12.2014 14:22:27
Luc:-?
…überhaupt nicht zu Barbaras Verwirrung beigetragen hast, Beverly… :->
Mit Leuten, die schnelle und vermeintlich richtige Schlüsse ziehen, habe ich so meine Erfahrungen. Mitunter kommt dann bei gründlichem Nachdenken über das Problem genau das Ggteil des SchnellSchlusses heraus! Wie war das doch gleich mit den Objekten in Xl… :->
Obwohl du es mal wieder nicht lassen kannst, auch dir …
GRutsch, Luc :-?

Das fragt man sich schon...
30.12.2014 14:41:39
Beverly
.... Aber soll sich doch jeder Leser selbst sein eigenes Urteil bilden.


AW: Eigene Klassen m.d.vorgegebenen vbXl-Klassen ...
30.12.2014 10:15:02
Beverly
Hi Barbara,
Excel ist hierarchisch aufgebaut und besteht aus Objekten, die Klasse genannt werden. Jede Klasse ist ein Container bzw. "besitzt" einen Container, um darin Objekte aufnehmen zu können.
Jedes Objekt kann aber auch wiederum eine Klasse sein, in deren Container sich weitere (untergeordnete) Objekte befinden.
Es gibt Standard-Klassen, die von Excel selbst erstellt und mit Objekten gefüllt werden und es gibt selbst definierte Klassen, die man vollkommen eigenständig füllen muss.
Die Standard-Klasse Workbook enthält als Objekte alle Arten von Sheets (Worksheets, Charts, usw.), UserForms. Jedes Objekt Worksheet wiederum ist eine Klasse, deren Container weitere Objekte (Zellen, Steuerelemente, Shapes usw.) enthält. Jedes Objekt Chart ist eine Klasse, die wiederum das Objekt Diagramm (mit seinen Unter-Objekten wie Achse, Datenreihe, Zechnungsfläche usw.) enthält. Das Objekt UserForm ist eine Klasse, welche die Objekte Steuerelemente enthält.
Bei der Standard-Klasse Workbook müssen die Objekte (und Klassen) Worksheets, Charts, UserForms dem Container nicht extra zugewiesen werden, das macht Excel automatisch, da es ja die Standard-Klasse für Sheets und UserForms ist.
Im Beispiel dagegen wird eine eigene, neue Klasse clsTabellen erstellt, die nur alle Worksheet-Objekte enthalten soll.
Um Objekte einer Klasse zuweisen zu können, müssen sie in den Container der Klasse eingetragen werden, der im Beispiel arrTabellen() heißt. clTab wiederum ist ein Objekt vom Typ Worksheet, welches sich im Container arrTabellen() der Klasse clsTabellen befindet, indem es per Code zugewiesen wird: Set arrTabellen(intTabellen).clTab = ...
wksTab ist "nur" eine Variable, um die Worksheets als Objekt ansprechen und dem Container arrTabellen() zuweisen zu können.


Objektkatalog-noch ein Senf
30.12.2014 12:52:55
Michael
Hallo zusammen,
ich finde es hin und wieder hilfreich, mir den Objektkatalog im VB-Editor anzusehen. Hier hatte ich im Suchfeld (links vom Fernglas) activecell eingegeben.
Userbild
Man kann sich hier durch alle Objekte durchhangeln und die vorhandenen Methoden bzw. Eigenschaften ansehen.
Es steht zwar da, aber sicherheitshalber: mit F7 bekommst Du Deinen VBA-Code wieder zu sehen.
Schöne Grüße & guten Rutsch,
Michael

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige