Thema Datum  Von Nutzer Rating
Antwort
08.11.2019 10:51:39 Mo
NotSolved
08.11.2019 10:53:10 Gast72591
NotSolved
08.11.2019 11:01:31 Gast32414
NotSolved
08.11.2019 13:07:55 Gast35627
NotSolved
Rot Übergabe von Kontanten
08.11.2019 23:08:33 xlKing
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
08.11.2019 23:08:33
Views:
494
Rating: Antwort:
  Ja
Thema:
Übergabe von Kontanten

Hallo Mo,

das zu erklären ist ein bisschen schwierig. Aber ich versuchs mal:

Erstens hast du die Konstante innerhalb der Sub deklariert weshalb sie auch nur dort wirkt. Durch den Funktionsaufruf übergibst du die Konstante a an den Parameter a der Funktion. Das ist jetzt aber eine Variable, die innerhalb der Funktion höhergewichtig ist. weil sie zuerst aufgerufen wird. Du kannst die Variable innerhalb der Funktion verändern, bei Rückgabe an die Konstante durch ByRef passiert jedoch nix, da Konstanten nunmal nicht verändert werden. Daher ist der DebugPrint in der Sub weiterhin 1. VBA verhält sich also hier richtig.

Zur Verdeutlichung habe ich deinen Code mal etwas abgeändert:

'Konstante Deklarieren
Const a As Integer = 1
Sub main()
 
'a = a + 1 'erzeugt einen Kompilierungsfehler
           'Zuweisung zu einer Konstanten nicht zulässig.

'Funktionsaufruf
fkt a
 
Debug.Print a ' Ausgabe--> 1
 
End Sub
 
Function fkt(ByVal b As Integer)
 
b = b + 1

'a = a + 1 'erzeugt einen Kompilierungsfehler
           'Zuweisung zu einer Konstanten nicht zulässig.

Debug.Print b  'Ausgabe --> 2
Debug.Print a  'Ausgabe --> 1
 
End Function

Die Konstante a übergibt nun den Wert an Variable b. Über Byval wird sichergestellt, dass die Veränderungen der Variablen b keinen Einfluss auf die Konstane a hat. Selbst wenn a ebenfalls eine Variable wäre. Konstanten die du im gesamten Modul bzw. Projekt verwenden willst gehören in den Modulkopf, also vor die erste Sub. Dadurch wird sie auch innerhalb der Funktion als Konstante behandelt und lässt sich nicht verändern.

Vielleicht hilft dir das ja weiter.

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.11.2019 10:51:39 Mo
NotSolved
08.11.2019 10:53:10 Gast72591
NotSolved
08.11.2019 11:01:31 Gast32414
NotSolved
08.11.2019 13:07:55 Gast35627
NotSolved
Rot Übergabe von Kontanten
08.11.2019 23:08:33 xlKing
NotSolved