Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Aufruf von Sub in Sub


Betrifft: Aufruf von Sub in Sub von: Marc
Geschrieben am: 19.04.2017 15:45:41

Hi,

irgendwie will mein Aufruf von einem Unterprogramm in einem Unterprogramm nicht klappen. Folgendes habe ich bisher probiert:

Sub Function1()
  Call Function2(0815)
End Sub

Sub Function2(Value as Integer)
  ...
End Sub
Lasse ich die Argumente bei Function2 weg funktioniert der Aufruf mit Call Function2 und diese wird ausgeführt.

Habe es auch schon ohne Klammern versucht: Call Function2 0815 ...will alles nicht klappen.

Wo liegt mein Fehler? Danke vorab.

  

Betrifft: AW: Aufruf von Sub in Sub von: Marc
Geschrieben am: 19.04.2017 15:47:44

Wenn ich das Makro ausführen möchte kommt folgender Fehler:

Fehler beim Kompilieren:
Argumenttyp ByRef unverträglich


  

Betrifft: AW: Aufruf von Sub in Sub von: ChrisL
Geschrieben am: 19.04.2017 15:53:07

Hi Marc

Ohne zu testen... Value als Name für eine Variable ist schlecht, weil der Begriff Value Bestandteil vom VBA-Syntax ist.

N.b. eine Prozedur als Funktion zu bezeichnen ist zusätzlich verwirrend, weil Function ist nicht gleich Sub.

Und der Vollständigkeit halber erwähnt. Die Null in 0815 geht natürlich verloren, weil Typ Integer ist eine Zahl. Ansonsten müsstest du als String übergeben, aber das wäre auch ungewöhnlich.

cu
Chris


  

Betrifft: AW: Aufruf von Sub in Sub von: Marc
Geschrieben am: 19.04.2017 15:59:09

Hatte es quasi nur als Beispiel so angegeben. Weder heißen die Prozeduren Function noch das Argument Value...war nicht gerade glücklich von mir gewählt.

Fehler lag am Ende wo ganz anders. Das Argument war vom Typ Long und in der Sub hab ich es als Integer erwartet. Ändert man das auf Long geht auch alles wie erwartet.


  

Betrifft: AW: dann liegts an der byRef Einstellung von: Sheldon
Geschrieben am: 19.04.2017 16:03:38

Hallo Chris,

wenn Du Function2 so einleitest

Sub Function2(byVal Eingabe as Integer)

dann funktioniert es auch. Natürlich vorausgesetzt, dass der in der Long Integer enthaltene Wert klein genug ist, um ihn an eine Integer Variable zu übergeben!

Integer: -32.768 bis 32.767
Long Integer: -2.147.483.648 bis 2.147.483.647


Gruß
Sheldon


  

Betrifft: AW: Aufruf von Sub in Sub von: Max2
Geschrieben am: 19.04.2017 16:06:29

Hallo,

einen Sub Funktion zu nennen ist sinnbefreit...

Hier ein Beispiel für ByVal und ByRef...

Sub aufruf()
Dim i As Integer

    Call function_mit_ByVal_Parameter(123)
    
    Call function_mit_ByRef_Parameter(i)
    MsgBox i
    
End Sub


Function function_mit_ByVal_Parameter(ByVal myNumber As Integer)

    MsgBox myNumber

End Function


Function function_mit_ByRef_Parameter(ByRef myNumber As Integer)

    myNumber = 123

End Function



  

Betrifft: AW: Dein Fehler im Forum, von: Gerd L
Geschrieben am: 19.04.2017 16:10:25

Mike, war, hier Code zu zeigen, der mit deinem absolut nichts zu tun hat.
Das nächste mal bitte den vollständigen Orginalcode.
Gruß Gerd


Beiträge aus den Excel-Beispielen zum Thema "Aufruf von Sub in Sub"