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

VBA: Call über Variable möglich?

Forumthread: VBA: Call über Variable möglich?

VBA: Call über Variable möglich?
19.01.2004 12:02:28
Jens-Peter Bargheim
Hallo Forum,
um verschiedene Prozeduren an immer gleicher Stelle im Code aufzurufen, weise ich den Namen einer aufzurufenden Prozedur einer Varable proz zu. Beispiel:
proz = "Werte_Aktualisieren(" & v_aktualisierungsart & ")"
Anschließend möchte ich die Prozedur aufrufen. Mit
Call proz
oder
Call (proz)
oder nur
proz
funktioniert es leider nicht. Hier erkennt VBA offenbar die Variable proz nicht und versucht, die Prozedur proz ausführen, die es nicht gibt.
Wie kann ich eine variablen Prozeduraufruf erzeugen (Bitte keine Case-Lösung oder andere fest codierten Lösungen) ?
Danke für Eure Beiträge und Ideen!
Jens-Peter
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Call über Variable möglich?
19.01.2004 12:07:10
ANdreas
Hallo Jens-Peter,
schau Dir mal Application.Run ("Makroname") an.
Hoffe das hilft weiter,
Andreas
AW: Danke Andreas!
19.01.2004 12:14:17
Jens-Peter Bargheim
Danke Andreas - jetzt geht's!
Jens-Peter
Anzeige
;
Anzeige

Infobox / Tutorial

VBA-Prozeduren dynamisch aufrufen


Schritt-für-Schritt-Anleitung

Um eine Prozedur in VBA über eine Variable aufzurufen, kannst Du die Application.Run Methode verwenden. Hier ist eine einfache Anleitung:

  1. Definiere die Variable: Weise den Namen der aufzurufenden Prozedur einer Variable zu. Zum Beispiel:

    Dim proz As String
    Dim v_aktualisierungsart As String
    v_aktualisierungsart = "beispiel_parameter"
    proz = "Werte_Aktualisieren(" & v_aktualisierungsart & ")"
  2. Führe den Aufruf durch: Anstatt Call proz zu verwenden, rufe die Prozedur mit Application.Run auf:

    Application.Run proz

Das ermöglicht es Dir, verschiedene Prozeduren dynamisch aufzurufen, ohne dass eine feste Zuordnung notwendig ist.


Häufige Fehler und Lösungen

Fehler: "Prozedur nicht gefunden"
Lösung: Stelle sicher, dass der Prozedurname in der Variable korrekt ist und dass die Prozedur sich im selben Modul oder in einem zugänglichen Modul befindet.

Fehler: "Ungültiger Prozeduraufruf"
Lösung: Überprüfe die Parameter, die Du übergibst. Achte darauf, dass die Anzahl und der Typ der Parameter mit denen der Prozedur übereinstimmen.


Alternative Methoden

Wenn Du keine Application.Run Methode verwenden möchtest, kannst Du auch ein Dictionary oder eine Collection nutzen, um Prozeduraufrufe zu verwalten. Damit kannst Du Prozeduren nach Namen speichern und dann je nach Bedarf aufrufen.

Dim prozeduren As Object
Set prozeduren = CreateObject("Scripting.Dictionary")
prozeduren.Add "Werte_Aktualisieren", AddressOf Werte_Aktualisieren

' Aufruf
prozeduren("Werte_Aktualisieren")()

Praktische Beispiele

Hier sind einige Beispiele, wie Du die Application.Run Methode nutzen kannst:

Sub BeispielAufruf()
    Dim aktualisierungsart As String
    aktualisierungsart = "Daten"

    Dim prozedurName As String
    prozedurName = "Werte_Aktualisieren(" & aktualisierungsart & ")"

    Application.Run prozedurName
End Sub

In diesem Beispiel wird die Prozedur Werte_Aktualisieren mit dem Parameter "Daten" aufgerufen.


Tipps für Profis

  • Debugging: Nutze Debugging-Tools, um den Inhalt der Variablen zu überprüfen, bevor Du die Application.Run Methode aufrufst. So kannst Du sicherstellen, dass der Prozedurname korrekt ist.
  • Parameterübergabe: Stelle sicher, dass alle Parameter in der richtigen Reihenfolge und im richtigen Typ übergeben werden, um Laufzeitfehler zu vermeiden.

FAQ: Häufige Fragen

1. Frage
Kann ich Application.Run auch für Module verwenden?
Antwort: Ja, Application.Run kann sowohl für Prozeduren in Modulen als auch für Prozeduren in Arbeitsblättern verwendet werden.

2. Frage
Was ist der Vorteil von dynamischen Prozeduraufrufen in VBA?
Antwort: Dynamische Aufrufe ermöglichen flexiblere und wartbare Codestrukturen, da Du nicht für jede Prozedur einen festen Aufruf definieren musst.

Nutze diese Tipps und Techniken, um Deine VBA-Prozeduren effizienter zu gestalten!

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