2016-08-03 4 views
0

Nun, nachdem ein großen großen Code zu schreiben und es lief bekam ich die NachrichtVBA-Prozedur zu groß, nur das erste Verfahren funktioniert

Verfahren zu groß.

Nach einigen Untersuchungen fand ich, dass ich den Code auf diese Weise schreiben:

Sub mycode() 
Call proc1 
Call proc2 
Call proc3 
End sub 

Sub proc1() 
'the code 
End sub 

Sub proc2() 
'the code 
End sub 

Sub proc3() 
'the code 
End sub 

Und das ist genau das, was ich getan habe, aber leider nur PROC1-Code, der ausgeführt wird.

Wie kann ich den ganzen Code auszuführen: PROC1 dann PROC2 dann PROC3 ????

+1

Wenn Sie proc 1/2/3 von Mycode aufrufen, wird es ausgeführt. Sind Sie sicher, dass in Ihrem Code nicht etwas anderes falsch ist? – DragonSamu

+1

Haben Sie viele Zeilen wie 'ActiveWindow.ScrollRow = 9838'? Ich würde raten, bei der akzeptierte Antwort auf diesen Thread suchen: http://stackoverflow.com/questions/11450232/getting-error-procedure-too-large-in-vba-macros-excel –

Antwort

3

Sie müssen das End Schlüsselwort irgendwo in proc1 haben:

'// some code here 
'// some more code 
End 

Ersetzen Sie diese mit:

'// some code here 
'// some more code 
Exit Sub 

die Steuerung an die aufrufende Prozedur zurück.


Das End Wort auf seine eigene wird die Ausführung zu stoppen, ohne die Kontrolle an die anrufende Prozedur zurückkehrt und nicht wirklich verwendet werden sollte, es sei denn, aus wichtigem Grund.

Als eine Nebenbemerkung, gibt es keine Notwendigkeit, das Call Schlüsselwort in VBA zu verwenden, es ist nur für Legacyzwecke da.

+0

Hey Makro Mann, danke für Ihre schnelle Antwort, gut, als ich ENDE durch Exit Sub ersetzt habe, habe ich ein Meldungsfeld "mit einem Fehler" – MissMacro

+0

bekommen .... und dieser Fehler war? –

+0

@MacroMan Seine Frage zeigt, dass er 'End Sub' verwendet, es scheint einfach so zu sein, als würde er' End Sub' durch 'Exit Sub' ersetzen ... somit wird das' Sub' niemals geschlossen. – DragonSamu