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