Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrere Subs zu einem zusammenfassen

Forumthread: Mehrere Subs zu einem zusammenfassen

Mehrere Subs zu einem zusammenfassen
21.12.2020 20:19:46
Alex
Guten Abend zusammen,
ich habe ein UserForm mit vier Checkboxen (CheckBox1, CheckBox2,...). CheckBox1 spricht alle Objekte an, die mit einer 1 enden, CheckBox2 alle Objekte, die mit einer 2 enden usw. Nun würde ich den Code an dieser Stelle gerne etwas zusammenfassen, wenn das möglich ist.
Mit meinen leider noch recht rudimentären VBA-Kenntnissen dachte ich zunächst an eine For-Next-Schleife. Das funktioniert aber wohl nur innerhalb eines Subs. Kann mir jemand von euch diesbezüglich weiterhelfen?
Private Sub CheckBox1_Click()
If Me.CheckBox1.Value = False Then
If ActiveDocument.ProtectionType  wdNoProtection Then ActiveDocument.Unprotect Password:=„ _
XXX“
ActiveDocument.InlineShapes(1).PictureFormat.Brightness = 1#
Me.ComboBoxInhalt1.Enabled = False
Me.ComboBoxJahrAlt1.Enabled = False
Me.CheckBox5.Enabled = False
Me.ComboBoxJahrJung1.Enabled = False
Me.TextBoxMdtName1.Enabled = False
Me.TextBoxAppendix1.Enabled = False
Me.TextBoxMdtNr1.Enabled = False
Me.ComboBoxInhalt1.Value = ""
Me.ComboBoxJahrAlt1.Value = ""
Me.ComboBoxJahrJung1.Value = ""
Me.TextBoxMdtName1.Value = ""
Me.TextBoxAppendix1.Value = ""
Me.TextBoxMdtNr1.Value = ""
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=„XXX“
Else
If ActiveDocument.ProtectionType  wdNoProtection Then ActiveDocument.Unprotect Password:=„XXX“ _
ActiveDocument.InlineShapes(1).PictureFormat.Brightness = 0.5
Me.ComboBoxInhalt1.Enabled = True
Me.ComboBoxJahrAlt1.Enabled = True
Me.CheckBox5.Enabled = True
Me.ComboBoxJahrJung1.Enabled = True
Me.TextBoxMdtName1.Enabled = True
Me.TextBoxAppendix1.Enabled = True
Me.TextBoxMdtNr1.Enabled = True
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=„XXX“
End If
End Sub
Viele Grüße
Alex
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Subs zu einem zusammenfassen
21.12.2020 20:57:15
onur
1) Statt
If Me.CheckBox1.Value = False Then
Me.ComboBoxInhalt1.Enabled = False
Else
Me.ComboBoxInhalt1.Enabled = True
...

Besser das:

Me.ComboBoxInhalt1.Enabled = Me.CheckBox1
...

2) Lagere alles in eine externe Sub
Public Sub Geklickt(byval i as Integer)
Me.Controls("ComboBoxInhalt"&i).Enabled = False
End Sub

Und rufe sie so auf:
Private Sub CheckBox1_Click()
Call Geklickt(1)
End Sub
Private Sub CheckBox21_Click()
Call Geklickt(2)
End Sub
...

Anzeige
AW: Mehrere Subs zu einem zusammenfassen
21.12.2020 21:40:00
GerdL
Moin Alex!
Private Sub CheckBox1_Click()
Call Doit(CheckBox1.Value, 1)
End Sub
Private Sub Doit(bol As Boolean, i As Integer)
Dim dblBrightness As Double
If ActiveDocument.ProtectionType  wdNoProtection Then ActiveDocument.Unprotect Password:=„ _
XXX“
If bol Then dblBrightness = 1 Else dlbBrightness = 0.5
ActiveDocument.InlineShapes(i).PictureFormat.Brightness = dblBrightness
Me.Controls("ComboBoxInhalt" & i).Enabled = bol
Me.Controls("ComboBoxJahrAlt" & i).Enabled = bol
Me.CheckBox5.Enabled = bol
Me.Controls("ComboBoxJahrJung" & i).Enabled = bol
Me.Controls("TextBoxMdtName" & i).Enabled = bol
Me.Controls("TextBoxAppendix" & i).Enabled = bol
Me.Controls("TextBoxMdtNr" & i).Enabled = bol
If Not bol Then
Me.Controls("ComboBoxInhalt" & i).Value = ""
Me.Controls("ComboBoxJahrAlt" & i).Value = ""
Me.Controls("ComboBoxJahrJung" & i).Value = ""
Me.Controls("TextBoxMdtName" & i).Value = ""
Me.Controls("TextBoxAppendix" & i).Value = ""
Me.Controls("TextBoxMdtNr" & i).Value = ""
End If
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=„XXX“
End Sub

Gruß Gerd
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige