Elemente einer Klasse über Variablen aufrufen in Excel VBA
Schritt-für-Schritt-Anleitung
-
Erstelle eine Klasse:
- Gehe zu
Einfügen
> Klasse
und nenne sie Klasse1
.
- Definiere die Variablen in der Klasse:
Option Explicit
Public Hund As Integer
Public Katze As Integer
Public Maus As Integer
-
Erstelle ein Standardmodul:
- Füge ein neues Modul hinzu und definiere die Subroutine:
Sub Ausgabe()
Dim Tiere(20) As String
Dim cTier As Klasse1
Set cTier = New Klasse1
' Einlesen
cTier.Hund = "Dackel"
cTier.Katze = "Tiger"
cTier.Maus = "Maus"
Tiere(1) = "Hund"
Tiere(2) = "Katze"
Tiere(3) = "Maus"
' Ausgabe, die funktioniert
Cells(1, 1) = cTier.Hund
Cells(1, 2) = cTier.Katze
Cells(1, 3) = cTier.Maus
' Ausgabe, die nicht funktioniert
Dim i As Integer
For i = 1 To 20
Cells(1, i) = cTier.Tiere(i) ' Hier wird der Fehler auftreten
Next i
End Sub
-
Verwende eine Collection:
- Füge eine Collection in einem Klassenmodul hinzu, um die Tiere dynamisch zu verwalten:
Option Explicit
Private mcolTiere As Collection
Public Property Get Tiere() As Collection
Set Tiere = mcolTiere
End Property
Private Sub Class_Initialize()
Set mcolTiere = New Collection
End Sub
Private Sub Class_Terminate()
Set mcolTiere = Nothing
End Sub
-
Füge Tiere in die Collection ein:
- Verwende den folgenden Code, um Tiere hinzuzufügen:
With objTiere.Tiere
.Add "Dackel", "Hund"
.Add "Siamkatze", "Katze"
.Add "Maus", "Nagetier"
.Add "Amsel", "Vogel"
End With
Häufige Fehler und Lösungen
Fehler 1: Typ Mismatch
beim Zugriff auf die Collection.
Lösung: Stelle sicher, dass der Typ der Variablen korrekt deklariert ist.
Fehler 2: Index außerhalb des Bereichs
beim Zugriff auf das Array.
Lösung: Überprüfe die Indizes und stelle sicher, dass du nur auf die vorhandenen Elemente zugreifst.
Alternative Methoden
Eine alternative Methode zur Verwaltung von Tieren ist die Verwendung von Dictionaries anstelle von Collections. Dies kann dir mehr Flexibilität bei der Schlüsselverwaltung bieten. Hier ist ein Beispiel:
Dim dictTiere As Object
Set dictTiere = CreateObject("Scripting.Dictionary")
dictTiere.Add "Hund", "Dackel"
dictTiere.Add "Katze", "Siamkatze"
Praktische Beispiele
Ein praktisches Beispiel zur Verwendung der Klasse könnte die Ausgabe aller Tiere in ein Arbeitsblatt sein:
Dim i As Integer
For i = 1 To objTiere.Tiere.Count
Cells(i, 1).Value = objTiere.Tiere(i) ' Hier wird das Nagetier ausgegeben
Next i
Tipps für Profis
- Verwende die
With
-Anweisung, um den Code lesbarer zu gestalten und die Anzahl der wiederholten Objektreferenzen zu reduzieren.
- Nutze die
Collection
oder Dictionary
, um Daten effizient zu verwalten und dynamisch auf Elemente zuzugreifen.
- Denk daran, das Arbeitsblatt regelmäßig zu speichern, um deine Fortschritte nicht zu verlieren.
FAQ: Häufige Fragen
1. Kann ich mit Strings auf Klassenvariablen zugreifen?
Nein, VBA unterstützt dies nicht direkt. Du musst entweder die Variablen explizit angeben oder eine Collection verwenden.
2. Was ist der Unterschied zwischen Collection und Array?
Ein Array hat eine feste Größe, während eine Collection dynamisch ist und Objekte mit Schlüsseln speichern kann.
3. Wie kann ich ein kleines Nagetier in die Collection hinzufügen?
Du kannst das Nagetier mit einem Schlüssel wie "Maus" hinzufügen:
objTiere.Tiere.Add "Maus", "Nagetier"
4. Was mache ich, wenn ich ein Element nicht finden kann?
Überprüfe die Schlüssel und die Indizes, um sicherzustellen, dass das Element korrekt hinzugefügt wurde.