Office: Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch

Helfe beim Thema Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, Ich rufe aus dem Hauptprogramm ein Unterprogramm auf, in dem ein übergebener Wert verarbeitet wird und anschließend an das Hauptprogramm... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von stau, 7. September 2019.

  1. Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch


    Hallo,

    Ich rufe aus dem Hauptprogramm ein Unterprogramm auf, in dem ein übergebener Wert verarbeitet wird und anschließend an das Hauptprogramm zurückgegeben werden soll.

    Hierzu habe ich folgende Programmstruktur benutzt:

    Sub HProg()
    Dim a As String
    a=3
    UProg (a)
    Msgbox "HProg-Endwert a= " & a
    End Sub

    Sub UProg (ByRef a As String)
    .... Verarbeitung von a
    Msgbox "UProg-Endwert a: " & a
    End Sub

    Bei Verlassen des Unterprogramms ist der Wert von a = 31, zurückgegeben wird aber nur der Anfangswert 3.

    Ich hatte gehofft, dass der Parameter ByRef die Rückgabe an das Hauptprogramm bewirkt. Das scheint nicht so zu sein.

    Über einen Tipp würde ich mich freuen.

    :)
     
  2. Der Steuerfuzzi, 9. September 2019
    #3
  3. Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch

    Hallo Storax,

    Vielen Dank. Hat wunderbar geklappt.
     
  4. Hallo EarlFred,

    Deine Erläuterung bringt ja wirklich alles auf den Punkt.
    So, wie ich es bisher nirgends lesen konnte.

    Herzlichen Dank.
     
  5. Hallo Stau,

    nur mal so am Rande, warum deklarierst du eine Variable, die numerische Werte aufnehmen soll als Text?

    Code:
     
    Klaus-Dieter, 9. September 2019
    #7
  6. Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch

    Hallo Klaus-Dieter,

    Ich hatte zunächst die Variable als Long deklariert und erhielt aus irgendeinem Grund einen Debug-Fehler. Daraufhin habe ich mehrere Webbeiträge zum Thema Unterprogrammtechnik gelesen und fand immer in den Beispielen die String-Deklaration.

    Daraufhin habe ich auf String umgestellt (und vermutlich aber noch eine weitere Änderung vorgenommen). Und siehe da: Es klappte.
    Ich habe mich allerdings darüber gewundert, dass man auch mit einer String-Variablen rechnen kann, denn im Unterprogramm wird mit der Variablen addiert.

    Auf jeden Fall gehe ich jetzt flugs zurück zur sinnvollen Long-Deklaration.

    Vielen Dank für Deine Aufmerksamkeit.
     
  7. Na dann geh das mal im Direktbereich durch:
    Code:
     
  8. Nachtrag:
    Nachdem ich gerade auf Long umgestellt habe, erhalte ich den Kompilierungsfehler "Argumenttyp ByRef unverträglich".

    Ich habe im aufrufenden Programm zf als Long deklariert, vorbeugend hier bereits einen numerischen Wert zugeordnet und rufe das Unterprogramm auf mit UPro zf.
    Im Unterprogramm habe ich Sub "ByRef zf s Long" hinzugefügt.

    Dieser Fehler war wohl meine Ausgangssituation, nach der ich auf String umgestellt hatte.
    Woran kann denn nun das wieder liegen?
     
  9. In meinem Link (Post #5) siehst du, wie es geht.

    Nebenbei: deine „Fehlerbeschreibung“ ohne Code ist sinnlos!
     
  10. Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch

    Hallo Marco,
    Genau an den von Dir genannten Link habe ich mich bei der Verwendung des Unterprogramms gehalten, und zwar dort Beispiel Nr.4 (Aufruf mit einer Integer-Variablen bei Anwendung von ByRef).
    Nur dass ich statt Integer den Typ Long verwende.

    Als ich nun statt Long den Typ Integer verwendet habe, läuft die Anwendung reibungslos. In meinem Fall ist das kein Problem, weil bei mir der Wert nie 32767 überschreiten kann.

    Bedeutet das nun, dass die Unterprogrammtechnik mit dem Typ Long versagt?
     
  11. Poste mal Dein Code (wie übrigens in #12 schon geschrieben) dann schauen wir weiter.
     
  12. Unsinn, es gilt immer noch mein erster Link.

    Erläuterung, zwar Englisch aber IMHO sehr gut
     
Thema:

Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch

Die Seite wird geladen...
  1. Unterprogrammtechnik Wertrückgabe an Hauptprogramm falsch - Similar Threads - Unterprogrammtechnik Wertrückgabe Hauptprogramm

  2. Vergleich zweier Tabellen und Wertrückgabe

    in Microsoft Excel Hilfe
    Vergleich zweier Tabellen und Wertrückgabe: Guten Tag, ich benötige Hilfe bei einer Vergleichsaufstellung: Zwei Tabellen (1+2) geben in einer Spalte Registrierungsnummern wieder und in einer zweiten Spalte Beträge. Ich benötige eine...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden