Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Public Const mit Klassen

Public Const mit Klassen
09.01.2019 18:51:42
sivcam
Hallo liebes Forum,
Ich versuche gerade "elegant" eine ganze Menge an Konstanten zu deklarieren. Es handelt sich immer um string und zu jeder Konstante gibt es eine auf Englisch und eine auf Deutsch.
Jetzt wollte ich ursprünglich meine Konstanten Public deklarieren und in einem Modul separat _ definieren (es werden viele werden...). Zum Beispiel mit

Public Const MatGruppe_b_DE       As String = "Werkstoffplatten"
Public Const MatGruppe_b_ENG      As String = "boards"

Da finde ich es schön übersichtlich später zum pflegen, allerdings ist es unschön zum ansprechen im späteren Code.
Daher wollte ich mit Klassen arbeiten und habe mir eine Klasse "CLS_Material" erstellt, die die Eigenschaften Deutsch (.strDE) und Englisch (.strENG) beinhaltet.
Das klappt separat auch gut. Dann kann ich eine Variable deklarieren:

Public MatGruppe_b as CLS_Material

Allerdings muss ich jetzt die Zuordnung der Werte in einer Prozedur machen:

MatGruppe_b.strDE = "Werkstoffplatte"
MatGruppe_b.strENG = "boards"

Gäbe es eine Möglichkeit diese Werte nun auch als Konstanten festzulegen, obwohl ich eine Klasse verwende?
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Public Const mit Klassen
09.01.2019 19:14:12
Nepumuk
Hallo,
dazu benötigst du für jede Konstante eine Property Get Prozedur. Beispiel:
In der Klasse:
Option Explicit

Private Const MatGruppe_b_DE As String = "Werkstoffplatten"
Private Const MatGruppe_b_ENG As String = "boards"

Public Property Get strDE() As String
    strDE = MatGruppe_b_DE
End Property

Public Property Get strENG() As String
    strENG = MatGruppe_b_ENG
End Property

Und in einem Standardmodul:
Option Explicit

Public Sub Beispiel()
    Dim objMatGruppe_b As MatGruppe_b
    Set objMatGruppe_b = New MatGruppe_b
    MsgBox objMatGruppe_b.strDE
    MsgBox objMatGruppe_b.strENG
    Set objMatGruppe_b = Nothing
End Sub

Gruß
Nepumuk
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Public Const in VBA Klassen effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Klasse: Öffne den VBA-Editor und füge ein neues Klassenmodul hinzu. Nenne es beispielsweise CLS_Material.

  2. Deklariere die Konstanten: Innerhalb der Klasse kannst du private Konstanten für die verschiedenen Sprachen deklarieren. Zum Beispiel:

    Private Const MatGruppe_b_DE As String = "Werkstoffplatten"
    Private Const MatGruppe_b_ENG As String = "boards"
  3. Erstelle die Property Get Prozeduren: Um auf die Konstanten zuzugreifen, definiere Public Property Get Prozeduren:

    Public Property Get strDE() As String
        strDE = MatGruppe_b_DE
    End Property
    
    Public Property Get strENG() As String
        strENG = MatGruppe_b_ENG
    End Property
  4. Verwende die Klasse in einem Standardmodul: Deklariere eine Instanz der Klasse und greife auf die Konstanten zu:

    Public Sub Beispiel()
        Dim objMatGruppe_b As CLS_Material
        Set objMatGruppe_b = New CLS_Material
        MsgBox objMatGruppe_b.strDE
        MsgBox objMatGruppe_b.strENG
        Set objMatGruppe_b = Nothing
    End Sub

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt."

    • Lösung: Stelle sicher, dass du eine Instanz der Klasse mit Set initialisiert hast, bevor du auf die Eigenschaften zugreifst.
  • Fehler: Konstanten sind nicht sichtbar.

    • Lösung: Stelle sicher, dass die Konstanten als Private in der Klasse deklariert sind und die Property Get Prozeduren die Werte zurückgeben.

Alternative Methoden

Eine andere Möglichkeit, globale Konstanten in VBA zu definieren, ist die Verwendung eines Moduls:

  1. Erstelle ein neues Modul.
  2. Deklariere die Konstanten dort:
    Public Const MatGruppe_b_DE As String = "Werkstoffplatten"
    Public Const MatGruppe_b_ENG As String = "boards"
  3. Greife dann in deinem Code direkt darauf zu, ohne eine Klasse zu verwenden.

Praktische Beispiele

Hier ist ein Beispiel für die Verwendung von Public Const:

Public Const MAX_ITEMS As Integer = 100

Public Sub CheckItems()
    If ItemCount > MAX_ITEMS Then
        MsgBox "Maximale Anzahl der Artikel überschritten!"
    End If
End Sub

Du kannst auch vba const string verwenden, um Textkonstanten zu definieren, die in verschiedenen Prozeduren nützlich sind.


Tipps für Profis

  • Nutze Public Const für Werte, die sich nicht ändern, um den Code besser wartbar zu machen.
  • Verwende konsistente Namenskonventionen für deine Konstanten, um die Lesbarkeit zu verbessern.
  • Überlege, ob du vba globale konstante anstelle von Klassen verwenden möchtest, um den Zugriff zu vereinfachen.

FAQ: Häufige Fragen

1. Wie definiere ich eine konstante in VBA? Du kannst eine Konstante in VBA mit Const deklariert werden, z.B. Public Const MeineKonstante As String = "Wert".

2. Was ist der Unterschied zwischen Public und Private Const? Public Const ist in jedem Modul zugänglich, während Private Const nur innerhalb des Moduls, in dem es definiert ist, verwendet werden kann.

3. Können Konstanten als Parameter in Funktionen verwendet werden? Ja, du kannst Konstanten als Parameter in Funktionen übergeben, was die Lesbarkeit und Wartbarkeit des Codes verbessert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige