31.01.2013 Aufrufe

Grundlagen der Programmierung mit VBA Visual Basic for

Grundlagen der Programmierung mit VBA Visual Basic for

Grundlagen der Programmierung mit VBA Visual Basic for

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Ein Parameterfeld variabler Länge. Ein Parameter-Array muss vom Typ Variant sein. Parameter-<br />

Arrays müssen am Ende <strong>der</strong> Parameterliste stehen. Beispiel:<br />

Sub TestMax()<br />

MsgBox Max(5, 2, 1, -10)<br />

End Sub<br />

Function Max(ParamArray arg() As Variant) As Variant<br />

Dim val As Variant<br />

Max = arg(0)<br />

For Each val In arg<br />

If val > Max Then Max = val<br />

Next<br />

End Function<br />

Benannte Argumente.<br />

Syntax<br />

Sub Name (Para1 [As Typ], Optional Para2 [As Typ], ...)<br />

Beim Aufruf können die Parameter in beliebiger Reihenfolge angegeben werden, wenn die bei <strong>der</strong><br />

Definition verwendeten Parameternamen angegeben werden. Beispiel:<br />

Name Para1:=100, Para2:=50<br />

Name Para2:=50, Para1:=100<br />

Aufgabe. Verwenden Sie die Übergabe <strong>mit</strong> einem Parameter-Array und erstellen Sie ein Programm<br />

für die Bestimmung des arithmetischen Mittelwertes beliebig vieler Werte.<br />

3.2.4 Verfahren <strong>der</strong> Werteübergabe<br />

Werte können auf zwei Arten übergeben werden:<br />

Call by Reference: die Speicheradresse des Parameters bleibt unverän<strong>der</strong>t. Wird <strong>der</strong> Parameter im<br />

Unterprogramm geän<strong>der</strong>t, wirkt sich das auch auf die übergeordneten Programme aus. Standardfall in<br />

<strong>VBA</strong> und FORTRAN. Häufige Ursache zunächst unerklärbarer Programmfehler.<br />

Call by Value: bei <strong>der</strong> Übergabe wird eine Kopie des Parameters erstellt. Eine Än<strong>der</strong>ung wirkt sich<br />

nicht nach oben aus. Standardfall in C/C++. Unbedarfte Anwendung kann bei rekursiven Programmen<br />

zu Speicherüberlauf führen.<br />

Beispiel. Es werden zwei Prozeduren verwendet, um zwei übergebene Parameter auszutauschen.<br />

Der Unterschied besteht in <strong>der</strong> Art <strong>der</strong> Übergabe, ByRef (Call by Reference) bzw. By Val (Call by<br />

Value).<br />

Sub Main()<br />

Dim x As Integer, y As Integer<br />

x = 3: y = 5<br />

TauscheR x, y ' Die Werte von x und y än<strong>der</strong>n sich<br />

TauscheV x, y ' Die Werte von x und y än<strong>der</strong>n sich nicht<br />

End Sub<br />

Sub TauscheR(ByRef a As Integer, ByRef b As Integer)<br />

Dim c As Integer<br />

c = a<br />

a = b<br />

b = c<br />

End Sub<br />

Sub TauscheV(ByVal a As Integer, ByVal b As Integer)<br />

Dim c As Integer<br />

c = a<br />

a = b<br />

b = c<br />

End Sub<br />

21

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!