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

Einer Sub zwei Variablen übergeben

Forumthread: Einer Sub zwei Variablen übergeben

Einer Sub zwei Variablen übergeben
Holger
Hallo,
ich möchte innerhalb einer

Sub
einer UnterSub ZWEI Variablen übergeben.
Dazu habe geschrieben:
Sub SetNSPCheck(blnError As Boolean, ctry As String)
...
...
...
end sub
Und in der Sub, in der ich diese aufrufe und hier nimmt er mir das nicht:
SetNSPCheck (True, strcountry)
Geht das nicht? Oder ist meine Syntax falsch?
Wenn nein, wie kann ich in der ÜberSub eine Variable definieren, deren Inhalt auch die UnterSub noch kennt?
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Sorry, hier die Lösung
18.06.2010 13:12:16
Holger
Sorry für das schnelle Posting, durch Try & error hier die Lösung gefunden:
SetNSPCheck (True), (strcountry)
nein, aber zwei andere Lösungen
18.06.2010 13:27:09
Erich
Hi Holger,
die Klammern, die du in deiner Lösung gesetzt hast, sind nicht falsch, aber wirkungslos und unnötig.
Du kannst schreiben:
SetNSPCheck True, strcountry
oder
Call SetNSPCheck(True, strcountry)
Tipp: Schau doch mal in die VBA-Hilfe zu Call.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: nein, aber zwei andere Lösungen
18.06.2010 20:06:30
Holger
Hi Erich,
mit den KLammern wurden die Argumente aber richtig übergeben!?
Ganz ohne Klammern gefällt mir am besten, ehrlich gesagt habe ich
mit der CALL Funktion Probleme, das hat nie so funktioniert wie ich wollte
bzuw nicht so wie es in meinem Excel VBA Buch stand.
Klammern waren nicht falsch, Call ist besser
18.06.2010 20:44:43
Erich
Hi Holger,
"mit den Klammern wurden die Argumente aber richtig übergeben!?":
Ja, ich hatte dazu geschrieben: "nicht falsch, aber wirkungslos und unnötig".
Genauso könntest du schreiben
SetNSPCheck ((True)), (((strcountry)))
Das geht auch.
Hast du die Variante mit dem Call
Call SetNSPCheck(True, strcountry)
denn mal ausprobiert? Ich behaupte, dass das genauso gut funzt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
besseres Deutsch ist ein Weg...
18.06.2010 13:16:16
Oberschlumpf
...zum Erfolg!
Hi Holger
Ich musste mir diesen Satz
...Und in der Sub, in der ich diese aufrufe und hier nimmt er mir das nicht...
echt 4x!!!! durchlesen, bevor ich ihn verstand.
Was hältst du von der Idee, deine Fragen, Hinweise usw vorm Absenden auf korrekte Grammatik zu überprüfen?
Eigentlich is dein Sub-Aufruf mit Parametern ok. Ich hab (noch) keine Ahnung, warum es bei dir nicht funktioniert.
Denn auch allein nur der Hinweis "nimmt er mir das nicht" (die echt gruselige Grammatik mal ausser Acht gelassen) ist eher nixsagend als hilfreich.
Besser wäre es gewesen, was denn genau passiert?
Denn das in Excel gar nix passiert, gibt es eigentlich nicht. Wenn etwas nich so funzt, wie gewünscht, dann kommt entweder falsches Ergebnis oder ne Fehlermeldung - aber du hast weder das eine noch das andere hier gepostet.
Ciao
Thorsten
Anzeige
AW: besseres Deutsch ist ein Weg...
19.06.2010 19:56:36
Holger
Hallo Torsten,
normalerweise ist meine Grammatik eigentlich fehlerfrei , der Zeitdruck ist oft ein Problem, der mich die Anwendung dieser vergessen läßt. Vor allem im Internet.
Ich verspreche mich zu bessern, manchmal liegt es aber auch an den schlechten VBA Kenntnissen, da ich nicht die genauen Bezeichnungen weiß. Eigentlich gibt es ja weder eine UnterSub noch eine übergeordnete Sub.
Gruß
Holger
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen in einer VBA Sub übergeben


Schritt-für-Schritt-Anleitung

Um in VBA eine Subroutine mit mehreren Parametern aufzurufen, gibt es einige grundlegende Schritte, die Du befolgen kannst. Hier ist eine einfache Anleitung:

  1. Definiere Deine Subroutine: Erstelle eine Subroutine, die die gewünschten Parameter akzeptiert. Zum Beispiel:

    Sub SetNSPCheck(blnError As Boolean, ctry As String)
       ' Deine Logik hier
    End Sub
  2. Übergebe die Parameter: Wenn Du die Sub aufrufst, kannst Du die Parameter wie folgt übergeben:

    SetNSPCheck True, "Deutschland"

    oder mit dem Call-Befehl:

    Call SetNSPCheck(True, "Deutschland")
  3. Vermeide unnötige Klammern: In Deinem Beispiel waren die Klammern überflüssig. Verwende sie nicht, es sei denn, Du hast spezifische Gründe dafür.


Häufige Fehler und Lösungen

  • Klammern: Wenn Du Klammern verwendest, achte darauf, dass sie nicht die Argumentübergabe beeinflussen. Der richtige Aufruf sollte ohne Klammern sein, es sei denn, Du nutzt Call.

  • Parameter nicht erkannt: Wenn Du eine Variable an die Sub übergeben möchtest, stelle sicher, dass die Variable korrekt definiert ist und den erwarteten Datentyp hat. Beispiel:

    Dim strCountry As String
    strCountry = "Deutschland"
    SetNSPCheck True, strCountry

Alternative Methoden

Zusätzlich zu den oben genannten Methoden gibt es mehrere Möglichkeiten, um eine VBA Sub mit mehreren Parametern aufzurufen. Hier sind einige Alternativen:

  • Mit Call: Der Call-Befehl ist eine klare Möglichkeit, eine Subroutine zu starten, insbesondere wenn Du mehrere Parameter übergibst:

    Call SetNSPCheck(True, strCountry)
  • Parameter als Array: Du kannst auch ein Array verwenden, um mehrere Werte zu übergeben:

    Dim params() As Variant
    params = Array(True, "Deutschland")
    Call SetNSPCheck(params(0), params(1))

Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele, wie Du mehrere Parameter in einer Subroutine übergeben kannst:

  1. Einfache Fehlerbehandlung:

    Sub SetNSPCheck(blnError As Boolean, ctry As String)
       If blnError Then
           MsgBox "Ein Fehler ist aufgetreten in " & ctry
       Else
           MsgBox "Alles in Ordnung in " & ctry
       End If
    End Sub
  2. Datenverarbeitung:

    Sub ProcessData(blnError As Boolean, ctry As String)
       If Not blnError Then
           ' Verarbeite Daten für das Land
           Debug.Print "Verarbeite Daten für: " & ctry
       End If
    End Sub

Tipps für Profis

  • Verwende aussagekräftige Parameternamen: Dies macht Deinen Code leserlicher und einfacher zu warten.

  • Nutze die VBA-Hilfe: Wenn Du unsicher bist, wie Du eine Sub aufrufst oder Parameter übergibst, schau in die integrierte Hilfe von VBA.

  • Testen und Debuggen: Nutze Debug.Print, um Werte zu überprüfen und sicherzustellen, dass die Parameter korrekt übergeben werden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Parameter an eine Sub übergeben? Du kannst mehrere Parameter einfach durch Kommas getrennt übergeben, z.B. SetNSPCheck(True, "Deutschland").

2. Was ist der Unterschied zwischen Call und dem direkten Aufruf einer Sub? Die Verwendung von Call ist optional. Es macht den Code etwas klarer, ist aber nicht notwendig. Du kannst auch ohne Call eine Sub aufrufen, solange Du die Syntax korrekt verwendest.

3. Was passiert, wenn ich die falschen Datentypen übergebe? Wenn Du einen falschen Datentyp übergibst, kann es zu Laufzeitfehlern kommen. Achte darauf, dass die übergebenen Werte den erwarteten Datentypen entsprechen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige