Prozeduren

Wenn Sie ein Modul oder ein Klassenmodul angelegt haben, sehen Sie eigentlich erst nur ein leeres Fenster für den Code. Um aber überhaupt Code ausführen zu können brauchen Sie entweder Prozeduren oder Funktionen.

Wie bereits bei den Variablen geschrieben, steht ganz oben in einem Modul immer der Deklarationsteil, in demalle benötigten Variablen deklariert werden. Die Zeile Option Explicit sorgt dafür, daß Sie die eine Deklaration der Variablen nicht vergessen. 

Eine Prozedur erstellen Sie z.B. ganz einfach mit der Zeile Sub MeineProzedur()

Grundsätzlich gilt im Codefenster: Schlüsselwörter müssen Sie nicht mit Großbuchstaben schreiben. Im Gegenteil, schreiben Sie alle Buchstaben klein, und die Schlüsselwörter werden automatisch von VBA groß geschrieben. Erfolgt keine Änderung in Großschreibung, sehen Sie sofort, daß Sie einen Fehler gemacht haben. Das gilt auch für Variablen. Nur in der Deklaration müssen Sie Großbuchstaben benutzen. Wie schon oben geschrieben, sollten Sie im Code alles klein schreiben, es wird beim Zeilenwechsel automatisch geprüft und umgeschrieben.

Immer wenn Sie die Zeile wechseln, wird diese auf die richtige Syntax überprüft, und Fehler werden sofort angezeigt. Dazu müssen aber die Standardoptionen aktiviert sein. Ignorieren Sie die angezeigten Fehler, wird die gesamte Zeile in roter Schrift markiert.

Der Name der Prozerdur ist frei wählbar mit den üblichen Einschänkungen für Benennungen. 

Wenn Sie die erste Zeile geschrieben haben und Return drücken, wird automatisch eine weitere Zeile darunter ezeugt: End Sub. Alles was jetzt zwischen diese Zeilen geschrieben wird, ist der Code zu dieser Prozedur.

Hier ein einfaches Beispiel für eine Prozedur:

               
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
Option Explicit 

Dim Schulfach As String 

Sub MeineSchule() 
     
    Schulfach = "Mathematik" 
     
     'es wird ein Hinweisfenster angezeigt
     '... mit dem Inhalt der Variablen
    MsgBox Schulfach 
     
End Sub 

Sub Aufruf() 

    Call MeineSchule 

End Sub 

 

Prozeduren arbeiten also den enthaltenen Code ab. Sie können Prozeduren von jeder Stelle im Code aufrufen. Wenn die Prozedur im selben Modul ist, reicht der Code wie oben beschrieben.

Soll eine Prozedur aus einem anderen Modul aufgerufen werden, muss die erste Zeile entsprechend erweitert werden. Da helfen - wie bei den Variablen - die Schlüsselwörter Private und Public weiter:

               
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Option Explicit 

Dim Schulfach As String 

Private Sub MeineSchule() 
     
    Schulfach = "Mathematik" 
     
     'es wird ein Hinweisfenster angezeigt
     '... mit dem Inhalt der Variablen
    MsgBox Schulfach 
     
End Sub 

Public Sub DeineSchule() 

    Schulfach = "Deutsch" 
     
     'es wird ein Hinweisfenster angezeigt
     '... mit dem Inhalt der Variablen
    MsgBox Schulfach 

End Sub 

Sub Aufruf() 

    Call MeineSchule 
     
    Call DeineSchule 

End Sub 

Der Aufruf selbst ist in den Zeilen 25 - 31, der Aufruf ist hier im selben Modul. Es werden beide Prozeduren ausgeführt. Wird der Aufruf in ein anderes Modul kopiert und dort aufgerufen, wird es bei der Zeile 27 eine Fehlermeldung geben, da die Prozedur nicht in dem eigenene Modul gefunden wird, Zeile 29 dagegen wird ausgeführt.

Prozeduren können aber noch mehr. Sie können an Prozeduren Variablen aus dem aufrufenden Teil übergeben, die dort dann weiter verarbeitet werden. Hier ein Beispiel für eine einfache mathematische Berechnung:

               
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Explicit 

Dim Ergebnis As Currency 


Private Sub Aufruf() 
     
   'Berechnung durchführen lassen
  Call Berechnung(3.66) 
   
   'Ergebnis der Berechnung anzeigen
  MsgBox Ergebnis 
     
End Sub 


Private Sub Berechnung(ByVal Grundzahl As Currency

    Ergebnis = Grundzahl * 5 

End Sub 

In diesem Beispiel wird der Wert beim Aufruf an die Prozedur übergeben und damit dann weitergerechnet. Wie Sie sehen, hat sich die Zeile 17 - die Prozedur Berechnung - ein wenig verändert. In den Klammern steht die Variable, die die Prozedur verarbeiten soll. Das Schlüsselwort ByVal sollte dabei immer verwendet werden. In Codes, in denen dieses Schlüsselwort weggelassen wurde, nimmt VBA den Standard. Sie sollten aber trotzdem unbedingt immer das Schlüsselwort nennen.

Schlüsselwort
Beschreibung
ByVal
es wird ein Argument als Wert übergeben
ByRef
es wird ein Wert als Referenz übergeben (Standardwert)
Optional
es muss kein Wert übergeben werden. Wenn das Schlüsselwort Optional benutzt wurde, dürfen danach auch nur Argumente mit dem Schlüsselwort Optional benutzt werden.


Nach der Berechnung wird das Ergebnis in der privaten Variable Ergebnis gespeichert und in der Prozedur Aufruf ausgegeben. 

Bei dem Beispiel ist es unbedingt notwendig, einen Wert für die Grundzahl mit zu übergeben. Es kann aber auch vorkommen, dass es zwar Werte geben kann - aber es nicht unbedingt notwendig ist. Hierzu ein weiteres Beispiel:

               
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Explicit 

Dim Ergebnis As Currency 


Private Sub Aufruf() 
     
   'Berechnung durchführen lassen
  Call Berechnung 
   
   'Ergebnis der Berechnung anzeigen
  MsgBox Ergebnis 
     
End Sub 


Private Sub Berechnung(Optional Grundzahl As Currency

    Ergebnis = Grundzahl * 5 

End Sub 

 

In obigem Beispiel wird in Zeile 9 kein Wert übergeben. Trotzdem funktioniert der Aufruf. Die Variable ist hier nicht leer sondern enthält ohne eine andere Zuweisung den Wert 0. Daher ist hier auch nicht zwingend eine Fehlerroutine nötig. Sonst müssen Sie sicherstellen, dass die leere Variable Grundzahl auch in der Prozedur verarbeitet werden kann.

Prozeduren stoßen jetzt aber an ihre Grenzen. Es ist nicht möglich, einen Wert zu übergeben und mit der Prozedur einen neuen Wert an den aufrufenden Codeteil zurückzugeben. Das ist nur mit Funktionen möglich.

 

 



Diese Seite zu Mister Wong hinzufügen
Diese Seite zu ecure.del.icio.us hinzufügen
Diese Seite zu webnews hinzufügen
Diese Seite zu Google Bookmarks hinzufügen
Diese Seite zu linkarena hinzufügen
Diese Seite zu Yahoo hinzufügen










Für weitere Infos bitte auf den Text klicken

http://www.prawi-officewelt.de
 .::. nach oben .::.
 
 
©2008 - 2019 www.VBA-Wordwelt.de - alle Rechte vorbehalten
 
Kontakt | Impressum
los Suche

Cookies speichern Informationen lokal auf Ihrem Rechner, ohne die Verwendung kann der Funktionsumfang beeinträchtigt werden. Weitere Informationen


Annehmen