1k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hi Leute,

folgendes Problem habe ich unter Excel-VBA 2007:

wenn ich in der Code-Ansicht einen Parameter einfüge in eine bereits existierende Funktion (diese Funktion ist bereits einem Makro zugeordnet), verschwindet dieses Makro schlicht und ergreifend.

das ist der Original-Code, bei welchem Excel keinen fehlenden Makronamen bemängelt:

Sub Zeile_einfügen() ' Zeile_einfügen Makro
' Der Funktionsparameter gibt den Bereich an unter welchem die Zeile eingefügt wird
Dim tmpzeile As Integer

'tmpzeile = zeile 'speichert die aktuelle Zeile in temporärer Variableter
ActiveSheet.Rows(23).Insert 'füge Zeile ein
ActiveSheet.Cells(23, 23).Activate 'Setze Cursor auf B2
'tmpzeile = zeile + 1 'Zeile wird immer um 1 erhöht
End Sub

und hier die neue Version:

Sub Zeile_einfügen(zeile As Integer) ' Zeile_einfügen Makro
' Der Funktionsparameter gibt den Bereich an unter welchem die Zeile eingefügt wird
Dim tmpzeile As Integer

tmpzeile = zeile 'speichert die aktuelle Zeile in temporärer Variableter
ActiveSheet.Rows(zeile).Insert 'füge Zeile ein
ActiveSheet.Cells(zeile, 23).Activate 'Setze Cursor auf B2
tmpzeile = zeile + 1 'Zeile wird immer um 1 erhöht
End Sub

Kann mir jemand sagen warum das so is?

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

wenn du in der Subzeile einen Parameter deklarierst, der dann - soweit nicht als optional deklariert - zwingend übergeben muss, kannst du die Routine nur noch durch ein weiteres Makro aufrufen, das den entsprechenden Parameter mit übergibt:

Sub zeile_einfuegen_aufrufen()
Dim zeile As Integer

zeile = 6
Call Zeile_einfügen(zeile)

End Sub


Beim Starten des Makros "von Hand" kannst du keinen Parameter übergeben, der Aufruf würde einen Fehler verursachen.

Gruß

M.O.
0 Punkte
Beantwortet von
Also bedeutet das, dass ich nur Sub's ohne Parameterliste erstellen kann? Mittlerweile habe ich das Ganze mit dem Anlegen einer Funktion gelöst und diese einfach nur in der Sub aufgerufen. Funktioniert problemlos.
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

du kannst natürlich Subs mit Parameterübergabe erstellen, nur kannst du die eben nur über andere Makros aufrufen, siehe Antwort 1 :-),

Gruß

M.O.
...