Prozedur zu groß

Aitutaki

Benutzer
Beiträge
14
Hallo,

habe diverse Formulare mit dazugehörigen Codes. Nach der Bearbeitung (Erweiterung) eines besonders langen Codes bekomme ich plötzlich die Fehlermeldung "Fehler beim Kompilieren: Prozedur zu groß."

Der Code besteht hauptsächlich aus einer sehr langen Reihe, sich wiederholender If-Elementen, die beim Anklicken von Checkboxen die Aktivität, Sperrung und Farben von Text- und Bezeichnungsfeldern ändern. Hier ein Ausschnitt als Beispiel:

If Me!AdrCheck = "1" Then
Me!Adr_GebDat.Enabled = True 'Aktivität
Me!Adr_GebDat.Locked = False 'Sperrung
Me!Adr_GebDat.BackColor = RGB(255, 255, 255) 'Textfeldhintergrundfarbe weiß
Me!Adr_GebDat.ForeColor = RGB(0, 0, 0) 'Textfeldschriftfarbe schwarz
Me!Bezeichnungsfeld393.ForeColor = RGB(0, 0, 0) 'Bezeichnungsfeldschriftfarbe schwarz
Else
Me!Adr_GebDat.Enabled = False 'Aktivität
Me!Adr_GebDat.Locked = True 'Sperrung
Me!Adr_GebDat.BackColor = RGB(204, 200, 194) 'Textfeldhintergrundfarbe mittelgrau 1
Me!Adr_GebDat.ForeColor = RGB(162, 157, 150) 'Textfeldschriftfarbe mittelgrau 3
Me!Bezeichnungsfeld393.ForeColor = RGB(162, 157, 150) 'Bezeichnungsfeldschriftfarbe mittelgrau 3
End If

Nun möchte ich diesen Code aufspalten und die sich wiederholenden Teile in einen einzigen Teil setzen, den ich mit CALL aufrufen möchte. Wie ließe sich das aufspalten? Soll dabei ein Modul oder ein Klassenmodul verwendet werden?

Ich bin VBA-Anfänger, wäre sehr dankbar für eine Hilfe.

Viele Grüße

Robert
 
Werbung:
Werbung:

Charly

Datenbank-Guru
Beiträge
306
Hallo Aitutaki,

was Du nimmst ist eigentlich egal.

Wenn Du ein Klassenmodul nimmst baust Du ein Objekt mit Eigenschaften usw. (Ist am Anfang aber mehr Arbeit).
Wenn Du ein normales Modul nimmst hast Du nur so was wie einen Sammelbehälter für Funktionen.

Beispiel für eine Funktion in einem Modul:

Ich will bei jedem Start eines Formulars seinen Namen in einer Messagebox angezeigt bekommen.

Code fürs Formular:
Code:
Private Sub Form_Load()
MsgBox "Mein name ist " & test(Me), vbOKOnly
End Sub

Code fürs Modul:
Code:
Public Function test(ByRef f As Form) As String
test = f.Name
End Function

Ist sehr einfach gehalten und nicht sonderlich Sinnreich zeigt aber wie es funktioniert.

Gruß Charly
 
Oben