Hallo deni,
ich versuche einmal, ein paar Beispiele darzustellen:
Private Sub Haupt () 'das ist das Hauptmakro
Anweisungen
Unter1 'hiermit wird die Sub Unter1 aufgerufen, Variablen werden nicht übergeben, es sei
'denn, sie sind vorher mit Public oder Private deklariert worden
Anweisungen
Unter2 a,b,c 'hiermit wird die Sub Unter2 aufgerufen und Variablen werden übergeben.
'Unter2 verwendet die Variablen , wie sich aus der Stellung ergeben. Die Argumente
'können auch als Rückgabewert verwendet werden, siehe aber ByVal in der VBH-Hilfe
Anweisungen
Call Unter2(a,b,c) 'hiermit wird auch die Sub Unter2 aufgerufen und Variablen werden übergeben.
'Verwendet man Call, müssen Klammern für die Argumente verwendet werden
Anweisungen
a=Unter3(d,e,f,g) 'hiermit wird die Funktion Unter3 mit Argunmenten aufgerufen und das Ergebnis
'in die Variable a geschrieben
End Sub
Private Sub Unter1() 'führt die Anweisungen ausund kehrt dann nach Haupt an den Befehl nach dem
' Aufruf zurück
Anweisungen
End Sub
Private Sub Unter2(ByVal y,x,z) 'Unter2 verwendet die übergebenen Werte in der Reihenfolge der
'Übergabe, also a als y etc. Wird z.B. in der Sub z ein Wert zugeordnet,
'so hat c nach dem Rücksprung den Wert von z, y kann nicht verändert
'werden (ByVal)!
Anweisungen
Unter1 'Aufrufe aus aufgerufenen Subs sind (begrenzt) möglich. Achtung: Zyklen vermeinden
End Sub
Private Function Unter3(q,w,e,r) 'Berechnet aus den Argumenten ein Ergebnis (hier t) und gibt es
Anweisungen
Unter3=t 'mit Zuweisung zum Funktionennamen zurück
End Function
In diesen Beispielen kann ich dir natürlich nur das Prinzip erklären. Einzelheiten und Feinheiten kannst du der VBA-Hilfe entnehmen.
Ich hoffe, dir geholfen zu haben.
Holger
deni schrieb am 28.01.2008 08:36:48:
Hallo
Wie kann ich eine Funktion aufrufen in einem Sub?
Zuerst hab ich die ganze Aufgabe was gemacht werden sollte in Private Sub hingeschrieben, aber am Schluss wenn ich das Makro starten will kommt "Procedur too large". Dann hab ichs in Funktionen aufgeteilt, aber ich weiss nicht wie ich sie Aufrufen kann in Private Sub.
Mit Call Sheet1.Dezember versucht hab ichs funktioniert, aber das funktioniert leidr nicht. Das Makro ist in VBA Excel 2003 |