Parameterdefinitionen in VBA (Parameterdefinitionen in VBA), Lektion, Seite 720839
https://www.purl.org/stefan_ram/pub/parameter_vba_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Parameter

Modul1

Option Explicit

Sub hallo_sabine()
Debug.Print "Hallo Sabine!"
End Sub

Sub hallo_andreas()
Debug.Print "Hallo Andreas!"
End Sub

Sub Main()
hallo_sabine
hallo_andreas
End Sub

Protokoll
Hallo Sabine!
Hallo Andreas!

Das voranstehende Protokoll zeigt die Ausgabe einer Ausführung des Subs »Main«. Solche Protokolle werden in diesem Kurs von nun an öfter zu finden sein: Wenn sich ein Sub »Main« findet, so ist dies das „Hauptprogramm“, und eine eventuell gezeigte Ausgabe ist die Ausgabe eines Laufs jenes Hauptprogramms.

An Stelle von Aufrufen ohne »CALL«, wie »hallo_sabine«, wären auch Aufrufe mit »CALL«, wie »CALL hallo_sabine()«, möglich.
Mit »Option Explicit« wird festgelegt, daß alle Variablen deklariert werden müssen.

In dem folgenden Programm stellt der Parameter »name« einen Platzhalter für den Wert eines Arguments (»Sabine« beziehungsweise »Andreas«) dar. Der Parameter wird in den Klammern mit »name As String« als eine Variable vom Typ »String« definiert. Der Wert des Parameters wird dann erst beim Aufruf mit »hallo "Sabine"« beziehungsweise »hallo "Andreas"« festgelegt

Modul1

Option Explicit

Sub hallo( name As String )
Debug.Print "Hallo " & name & "!"
End Sub

Sub Main
hallo "Sabine"
hallo "Andreas"
End Sub

Protokoll
Hallo Sabine!
Hallo Andreas!
An Stelle von Aufrufen ohne »CALL«, wie »hallo "Sabine"«, wären auch Aufrufe mit »CALL«, wie »Call hallo( "Sabine" )«, möglich.

»hallo« kann auch aus dem Direktbereich aufgerufen werden.

Direktbereich

Call hallo( "Sabine" )

hallo "Sabine"

Makros

Ein Makro ist ein Unterprogramm ohne  Parameter

Nur Makros lassen sich mit F5 starten

ByVal und ByRef

Mit ByRef wird erreicht das der Parametername für die Argumentvariable steht.

Mit ByVal wird erreicht das der Parametername für eine Kopie des Wertes der Argumentvariable steht.

Wird keines von beidem angegeben, so ist dies als wäre ByRef  angegeben worden.

Quelltext

Sub P( ByRef X As Integer, ByVal Y As Integer, Z As Integer )
X = 1
Y = 1
Z = 1
End Sub

Sub Main()
Dim A As Integer
Dim B As Integer
Dim C As Integer
A = 0
B = 0
C = 0
P X:=A, Y:=B, Z:=C
Debug.Print A
Debug.Print B
Debug.Print C
End Sub

Ausgabe
1
0
1

Übungsfragen

?   Übungsfrage 0

Welche Ausgabe erzeugt das folgende Programm (»Sub Main«)?

Modul1

Option Explicit

Sub p( i As Integer )
Debug.Print i + 1
End Sub

Sub Main
p 4
p 5
End Sub

Übungsaufgaben

/   Übungsaufgabe 0 ⃖

Modul1

Option Explicit

Sub gruesse( name As String )
Debug.Print "Hallo " & name & "!"
End Sub

Sub Main
gruesse "Mia"
End Sub

Protokoll
Hallo Mia!

Überarbeiten Sie das obenstehenden Hauptprogramm so, daß die folgende Ausgabe mit Hilfe des Subs »gruesse« erzeugt wird.

Bei dieser Aufgabe darf nur das Hauptprogramm  verändert werden. Das Hauptprogramm des Ergebnisses darf nur  Aufrufanweisungen enthalten, welche das Sub »gruesse« aufrufen. Es darf keine  Ausgabeanweisungen (kein »Print«) enthalten.

Das Hauptprogramm  beginnt mit der Zeile »Sub Main«.
Protokoll der Lösung
Hallo Mia!
Hallo Mia!
Hallo Mia!

/   Übungsaufgabe 1 ⃖

Modul1

Option Explicit

Sub gruesse( name As String )
Debug.Print "Hallo " & name & "!"
End Sub

Sub Main
gruesse "Mia"
End Sub

Protokoll
Hallo Mia!

Überarbeiten Sie das obenstehenden Hauptprogramm so, daß die folgende Ausgabe mit Hilfe des Subs »gruesse« erzeugt wird.

Bei dieser Aufgabe darf nur das Hauptprogramm  »Main« verändert werden. Das Hauptprogramm des Ergebnisses darf nur  Aufrufanweisungen enthalten, welche das Sub »gruesse« aufrufen. Es darf keine  Ausgabeanweisungen (kein »Print«) enthalten.

Das Hauptprogramm  beginnt mit der Zeile »Sub Main«.
Protokoll der Lösung
Hallo Mia!
Hallo Ben!
Hallo Lea!

/   Übungsaufgabe 2 ⃖

Überarbeiten Sie die Lösung der vorherigen Übungsaufgabe, indem Sie die Deklaration des Subs »gruesse« so verändern, daß die folgende Ausgabe erzeugt wird. (Hierbei darf das Hauptprogramm nicht verändert werden.)

Das Hauptprogramm  beginnt mit der Zeile »Sub Main«.
Protokoll der Lösung
Guten Tag, Mia!
Guten Tag, Ben!
Guten Tag, Lea!

/   Übungsaufgabe 3 ⃖⃖ _

Überarbeiten Sie die Lösung der vorherigen oder der ersten Übungsaufgabe, indem Sie die Deklaration des Subs »gruesse« so verändern, daß der Parameter den Typ »Integer« hat und dieses Sub nicht mehr mit Namen sondern mit Zahlen aufgerufen werden muß. Hierzu sollen auch die Aufrufe im Hauptprogramm so angepaßt werden, daß das Sub »gruesse« im Hauptprogramm jeweils einmal mit dem Argumentwert «0», «1» beziehungsweise «2» aufgerufen wird.

Man soll also den Typ der Parameter und Argumente nach »Integer« ändern.

Die Ausgabe soll dann folgendermaßen lauten:

Protokoll der Lösung
Guten Tag, 0!
Guten Tag, 1!
Guten Tag, 2!

/   Übungsaufgabe 4

Modul
Sub pflanzen() 
debug.print "Rotkohl" 
debug.print "Rotkohl Grünkohl" 
debug.print "Rotkohl" 
debug.print "Lauch" 
debug.print "Lauch Grünkohl" 
debug.print "Lauch" 
debug.print "Grünkohl" 
debug.print "Grünkohl Grünkohl" 
debug.print "Grünkohl" 
debug.print "Lauch" 
debug.print "Lauch Grünkohl" 
debug.print "Lauch" 
End Sub

Übungsaufgabe Vereinfachen Sie das Sub  "pflanzen", indem Sie ein weiteres Sub schreiben, das den sich wiederholenden Teil ausgibt. Dieses weitere Sub muß aber als Argument einen jeweils veränderlich Text erhalten, damit es weiß, was es ausgeben soll.

P-Sub schreiben
Schreiben Sie ein Sub "P", das sein Argument (welches eine beliebigen Typ haben können soll) mit Debug.Print ausgibt.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720839 stefan_ram:720839 Parameterdefinitionen in VBA Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720839, slrprddef720839, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/parameter_vba_de