Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Prozedur zu Groß
19.07.2016 14:16:34
Nermin
Hallo liebe Leute,
soeben habe ich eine Mitteilung von VBA bekommen, dass meine Prozedur zu groß sei. Kurzer Hand habe ich gegooglet und da wurde mir schnell geholfen: mit Call - Funktion die Prozedur in kleinere zerstückeln.
Jetzt kommen wir zum Problem:
Wie nehme ich die Variablen mit? Ich arbeite in der Hauptprozedur mit einer Variable "i" die für die Zeile Steht, genauer For - Schleife ( For i = 11 To Cells(Rows.Count, "D").End(xlUp).Row). Wie nehme ich den Wert für "i" in die Prozedur mit?
Hoffe Ihr könnt mir da Helfen. :)
´
Gruß,
Nermin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozedur zu Groß
19.07.2016 14:26:18
UweD
Hallo
in Klammern ()
so z.B.

Sub fgfgf()
Dim i
For i = 11 To Cells(Rows.Count, "D").End(xlUp).Row
Call DeinMakro(i)
Next
End Sub
Sub DeinMakro(i)
MsgBox i
'gfgfgffg
End Sub
Gruß UweD
AW: Prozedur zu Groß
19.07.2016 14:42:55
Nermin
Hallo UweD,
hat super funktioniert!!! Vielen Dank!
Gruß,
Nermin
AW: Prozedur zu Groß
19.07.2016 14:27:33
Michael
Hi,
der Aufruf von Prozeduren kostet Zeit (es müssen Variablen angelegt, Speicherplatz adressiert und Wert hin und her geschaufelt werden), so daß es mir vernünftiger erscheint, die komplette For-Schleife in eine eigene "Unter-Sub" zu stecken, als die immer gleiche Sub x-mal aufzurufen.
Allerdings habe ich das eine oder andere von Dir mitverfolgt, und ich mag gar nicht glauben, daß die Fehlermeldung exakt den Sachverhalt widerspiegelt.
Um da was konkret beurteilen zu können, sollten wir den kompletten Code kennen...
Schöne Grüße,
Michael
Anzeige
AW: Prozedur zu Groß
19.07.2016 14:28:03
Lukas
Die Variablen die du "mitnimmst" heißen Parameter.
Wenn du die kleinere Funktion deklarierst deklarierst du einfach in der Klammer neben dem Prozedurnamen die Variablen.
Zum Beispiel so:
Sub Hauptprogramm()
Code...
Call Zwischenfunktion(i)
'Da i deine Variable ist musst du sie in die Klammer schreiben. Ihr Wert wird dann an die  _
Variable von der Funktion übergeben!
Code...
End Sub

Function Zwischenfunktion(intZählervariable as integer)
'Hier kannst du mit der intZählervariable (dem Parameter) weiterprogrammieren
End Function

Anzeige
AW: Prozedur zu Groß
19.07.2016 14:44:14
Nermin
Hey Lukas,
hat super funktioniert!!! Vielen Dank!
Gruß,
Nermin
AW: Prozedur zu Groß
19.07.2016 14:36:38
Daniel
Hi
entweder mit Parameterübergabe:
Sub HauptMakro
Dim i as Long
For i = 11 to Cells(Rows.Count, "D").End(xlUp).Row
Call MakroX(i)
Next
End Sub
Sub MakroX(i)
Cells(i, 1).Value = "Hallo Welt"
End Sub
oder du verwendest projektweit gültige Variablen, das sind Variablen die von allen Makros verwendet werden können.
Projektweit gültige Variablen dürfen dann in den einzelnen Makros nicht nochmal deklariert werden, sonst entstehen neue eigenständige Variablen in den Prozeduren, die nicht mit der projektweit gültigen zu tun haben.
allgemeine Variablen wie Schleifenzähler i usw als Projektweit zu deklarieren birgt ein gewisses Risiko, die Übersicht zu verlieren.

Option Explicit
Public i as Long
Sub HauptMakro
For i = 11 to Cells(Rows.Count, "D").End(xlUp).Row
Call MakroX
Next
End Sub
Sub MakroX
Cells(i, 1).Value = "Hallo Welt"
End Sub

die Meldung "Prozedur zu gross" ist eher ungewöhnlich.
wenn du nicht ein wirklich aufwendiges Projekt hast, lässt das eher auf eine ungeschickte Programmierweise vermuten.
Gruß Daniel
Anzeige
AW: Prozedur zu Groß
19.07.2016 14:45:00
Nermin
Hey Daniel,
Danke das passt!!! Hat super funktioniert!!!
Gruß,
Nermin
AW: dann zu
19.07.2016 14:50:56
UweD
Eine Prozedur kann aus 2 Gründen zu groß ...
19.07.2016 14:59:51
Luc:-?
…wdn, Nermin,
beide hat Daniel bereits angedeutet bzw genannt:
1. mehr oder weniger unelegante (Geradeaus-)Pgmmierung (ggf ohne nennenswerte Zyklen­Verwendung),
2. sehr aufwendiges Programm, das im Regelfall eine Einheit bilden würde.
Die Begrenzung für Pgmm liegt je nach PgmmierStil und überwiegendem Zeilen­Aufbau beim Zeichen­Anzahl­Äquivalent von ca 1000 bis 1500 durchschnittlich ausgefüllten Zeilen PgmCode. Mit einem umfangreichen Pgm (wie bspw einer anspruchsvollen Xl-TabDarstellung in HTML) kann man das durchaus erreichen.
Gruß, Luc :-?
Besser informiert mit …
Anzeige

122 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige