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

Elementname (Enum) übergeben

Forumthread: Elementname (Enum) übergeben

Elementname (Enum) übergeben
19.01.2022 17:38:34
Nils
Hallo zusammen,
ich würde gerne auf einem Tabellenblatt den Elementnamen einer Enumeration eingeben und dann an eine vba-Funktion übergeben und ihn dann dort direkt verwenden. Ich würde als z.B. gerne xlEdgeLeft in eine Zelle eingeben, dann mit einer Funktion auf diese Zelle zugreifen und dann den übergebenen Wert direkt z.B. in Range.Borders verwenden.
Ist das möglich?
Vielen Dank und viele Grüße
Nils
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Elementname (Enum) übergeben
19.01.2022 18:04:26
Yal
Hallo Nils,
jein, aber eher nein. Enum sind menschenlesbare Bezeichner, um ein nicht sprechenden Zahl zur Verfügung zu stellen. Diese sind nur innerhalb VBA bekannt und können nicht als Text übergeben werden. Genau wie Variablenamen.
Aber Du kannst eine Konvertierungsfunktion bauen, die das macht:

Public Function EnumConvert(StringWert As String)
Select Case Trim(StringWert)
Case "xlEdgeLeft": EnumConvert = xlEdgeLeft
Case "xlEdgeRight": EnumConvert = xlEdgeRight
case ...
End Select
End Function
Du siehst dabei, dass Du dann nicht zwangsläufig "xlEdgeLeft" verwende müsste, sondern jede beliebige sprechende Begriff wie "Aussenrahmen_links".
Ob am Ende diese Überbau hilfreich oder eher pflegeaufwändig-lästig ist, musst Du selber abwegen.
VG
Yal
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Elementnamen (Enum) in Excel VBA übergeben


Schritt-für-Schritt-Anleitung

Um einen Elementnamen einer Enumeration (Enum) in einer Excel-Tabelle einzugeben und diesen an eine VBA-Funktion zu übergeben, gehe wie folgt vor:

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Erstelle ein neues Modul:

    • Klicke auf „Einfügen“ und wähle „Modul“.
  3. Füge die Konvertierungsfunktion ein. Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Public Function EnumConvert(StringWert As String)
       Select Case Trim(StringWert)
           Case "xlEdgeLeft": EnumConvert = xlEdgeLeft
           Case "xlEdgeRight": EnumConvert = xlEdgeRight
           ' Weitere Fälle hinzufügen
           Case Else: EnumConvert = -1 ' Ungültiger Wert
       End Select
    End Function
  4. Gib den Enum-Namen in eine Zelle ein. Zum Beispiel: xlEdgeLeft.

  5. Verwende die Funktion in einer Formel. In einer anderen Zelle kannst Du dann die Funktion wie folgt aufrufen:

    =EnumConvert(A1)

    (Hierbei ist A1 die Zelle, die den Enum-Namen enthält.)

  6. Verwende den zurückgegebenen Wert in deiner VBA-Prozedur, um ihn beispielsweise in Range.Borders zu verwenden.


Häufige Fehler und Lösungen

  • Fehler: Ungültiger Wert
    Wenn Du einen nicht definierten Enum-Namen eingibst, gibt die Funktion -1 zurück. Stelle sicher, dass Du nur gültige Enum-Namen verwendest.

  • Problem: Die Funktion wird nicht erkannt
    Überprüfe, ob der VBA-Code im richtigen Modul eingefügt wurde und dass Du das richtige Arbeitsblatt aktiv hast.


Alternative Methoden

Eine alternative Methode zur Nutzung von Enums in Excel VBA ist die Verwendung von Dictionary-Objekten. Hierbei kannst Du eine Zuordnung der Enum-Namen zu ihren Werten erstellen. Dies kann die Flexibilität erhöhen und die Pflege der Enum-Werte erleichtern.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie Du die Funktion EnumConvert in einer größeren VBA-Prozedur verwenden kannst:

Sub SetBorders()
    Dim borderType As Long
    borderType = EnumConvert(Range("A1").Value) ' Enum-Namen in Zelle A1
    If borderType <> -1 Then
        With Range("B1").Borders
            .LineStyle = borderType
            .Weight = xlThin
        End With
    Else
        MsgBox "Ungültigen Enum-Wert eingegeben."
    End If
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung in Deiner VBA-Funktion, um unerwartete Werte besser handhaben zu können.
  • Halte die Enum-Namen in einer separaten Tabelle fest, um die Übersichtlichkeit und Wartung zu verbessern.
  • Nutze Kommentare in Deinem VBA-Code, um die Funktionsweise der Enum-Umwandlung für andere Benutzer zu dokumentieren.

FAQ: Häufige Fragen

1. Kann ich beliebige Namen für die Enum-Werte verwenden?
Ja, Du kannst die Namen in der Select Case-Anweisung beliebig anpassen, solange sie korrekt auf die entsprechenden Enum-Werte abgebildet sind.

2. Funktioniert dies in allen Excel-Versionen?
Ja, die beschriebenen Methoden zur Verwendung von Enums in VBA sollten in den meisten modernen Excel-Versionen funktionieren. Achte darauf, dass Du die VBA-Umgebung korrekt eingerichtet hast.

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