Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: call Aufruf mit Übergabe einer befüllten Variablen

call Aufruf mit Übergabe einer befüllten Variablen
21.09.2017 15:59:47
Christian
Hallo Freunde,
Frage, Ich möchte gerne eine SubProzedur in einem VBA Script starten, und die
befüllte variable (mon As String) dabei übergeben.
mon wird min der Hauptprozedur abgefragt, dann als Monat (mon) definiert, und in der zweiten Sub Prozedur (Gleiche Mappe, neues Sheet) benötigt.
So klappts nicht:
Call Tabelle8.KostenCube(mon)
Wer kann dies denn beantworten.
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Parameter muss definiert sein
21.09.2017 16:30:37
Peter(silie)
Hallo,
das geht nur, wenn du dem Sub "KostenCube" auch mit dem Parameter definierst.
Der sub muss also wie folgt aussehen: Sub KostenCube(ByVal mon As String)
Das Call kannst du dir sparen, es reicht: Tabelle8.KostenCube(mon)
Ich empfehle dir, alle Subs, die nicht direkt mit Worksheet Events zu tun haben,
in Module zu schreiben.
Nur sachen die direkt mit dem Sheet zu tun haben sollten in den Sheet Code.
(z.B. Private Sub Worksheet_Change(ByVal Target As Range) usw. )
Anzeige
AW: Parameter muss definiert sein
21.09.2017 20:12:43
Robert
Hallo,
wenn man die Variable mon nicht in der Prozedur deklariert sondern direkt in der ersten Zeile des Moduls, also außerhalb der Prozeduren, mit Public mon As String, kann man von jeder Prozedur in der Datei darauf zugreifen.
Als Beispiel wird in nachstehendem Code bei Aufruf der Prozedur a die Variable strTmp befüllt und in der Prozedur b in einer Messagebox ausgegeben.
Option Explicit
Public strTmp As String
Sub a()
strTmp = "Test"
Call b
End Sub
Sub b()
MsgBox strTmp
End Sub
Gruß
Robert
Anzeige
AW: Parameter muss definiert sein
22.09.2017 07:15:35
Christian
Hallo,
Vielen Dank!
Funktioniert.....schon eingebaut :-)
Gruß
Christian
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Variablen Übergabe in Sub-Prozeduren


Schritt-für-Schritt-Anleitung

Um eine befüllte Variable in einer Excel VBA Sub-Prozedur zu übergeben, folge diesen Schritten:

  1. Definiere die Variable: Zuerst musst du die Variable in deiner Hauptprozedur definieren. Zum Beispiel:

    Dim mon As String
    mon = "Januar" ' Beispielwert
  2. Erstelle die Sub-Prozedur: In der Sub-Prozedur, die du aufrufen möchtest, definiere den Parameter:

    Sub KostenCube(ByVal mon As String)
       ' Hier kannst du mit der Variable mon arbeiten
    End Sub
  3. Aufruf der Sub-Prozedur: Rufe die Sub mit der Variable auf. Es reicht:

    KostenCube(mon)

Häufige Fehler und Lösungen

  • Fehler: "Parameter muss definiert sein"

    • Lösung: Stelle sicher, dass der Parameter in der Sub-Prozedur korrekt definiert ist, z.B. Sub KostenCube(ByVal mon As String).
  • Fehler: Variable nicht gefunden

    • Lösung: Wenn die Variable nicht innerhalb der Prozedur deklariert ist, kannst du sie als Public deklarieren, um von jeder Prozedur darauf zuzugreifen. Beispiel:
      Public mon As String

Alternative Methoden

Eine alternative Methode zur Übergabe von Variablen ist die Nutzung von globalen Variablen. Hierbei deklarierst du die Variable außerhalb aller Subs:

Option Explicit
Public mon As String

Sub Hauptprozedur()
    mon = "Februar"
    KostenCube
End Sub

Sub KostenCube()
    MsgBox mon
End Sub

Diese Methode vermeidet die Notwendigkeit, Parameter explizit zu übergeben.


Praktische Beispiele

Hier ein einfaches Beispiel, wie man eine Variable an eine Sub-Prozedur übergibt:

Sub Hauptprozedur()
    Dim mon As String
    mon = "März"
    KostenCube mon
End Sub

Sub KostenCube(ByVal mon As String)
    MsgBox "Der übergebene Monat ist: " & mon
End Sub

In diesem Beispiel wird der Monat "März" übergeben und in einer Messagebox angezeigt.


Tipps für Profis

  • Verwende Typendeklarationen: Immer sicherstellen, dass du deine Variablen mit den richtigen Datentypen deklarierst, um Fehler zu vermeiden.
  • Organisiere deinen Code: Schreibe Subs, die nicht direkt mit Worksheet-Events zu tun haben, in Module. Das verbessert die Lesbarkeit und Wartbarkeit deines Codes.
  • Nutze ByRef und ByVal: Überlege, ob du die Variable als Referenz (ByRef) oder Wert (ByVal) übergeben möchtest. ByRef erlaubt es, die Originalvariable zu ändern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Parameter an eine Sub-Prozedur übergeben?
Du kannst mehrere Parameter in der Sub-Prozedur definieren, indem du sie durch Kommas trennst:

Sub KostenCube(ByVal mon As String, ByVal jahr As Integer)
    ' Verwendung der Parameter
End Sub

2. Was ist der Unterschied zwischen ByVal und ByRef?
ByVal übergibt eine Kopie der Variablen, während ByRef eine Referenz auf die Originalvariable übergibt, was bedeutet, dass Änderungen an ByRef die Originalvariable beeinflussen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige