ich versuche als Anfänger seit einigen Tagen eine komplexer
gestaltete Mappe/Idee umzusetzen und habe mich seit zwei Abenden an
Problemen festgefressen, deren Wurzel das Zuweisen von Werten an Variablen ist.
Meinen gesamten VBA-Text habe ich im Tabellenblattmodul untergebracht.
In diesem Tabellenblatt wird es etliche (vielleicht um die 50-100) Checkboxen geben
(Steuerelement Toolbox).
Ich werde diese Boxen alle einzeln einfügen und dafür kleine CheckBox1_Click Subs
erstellen, die dann widerum Unterprozeduren (oder Funktionen?!) aufrufen sollen,
um bei Klick immer die gleichen umfangreicheren Operationen bezogen auf die jeweilige Klick-Zeile
zu vollziehen.
Mein Problem ist jetzt, gerade diese Information, um welche CheckBox-Nr. es sich handelt aus der schlanken Click-
prozedur in die Subs zu überführen und dort vor allem dann die jeweiligen Befehle gültig zusammenzusetzen.
ein Beispiel:
Private Sub CheckBox2_Click()
Dim sBoxNum As String
sBoxNum = "CheckBox2"
Dim Zeichenkette As Boolean
Zeichenkette = CheckBox2.Value
Call CB_haken(Zeichenkette, sBoxNum)
End Sub
Function CB_haken(Zeichenkette As Boolean, sBoxNum As String)
If Not bCheckNoEvent Then GoTo ausfuehren
bCheckNoEvent = False
Exit Function
ausfuehren:
Dim ws As Worksheet, s As Shape
Dim Statusbit As Boolean
Statusbit = False
Set ws = ActiveSheet
Set s = ws.Shapes(sBoxNum)
If Zeichenkette Then
Call LinkerHakenEin(s.TopLeftCell.Row, Zeichenkette, Statusbit)
End If
If Not Zeichenkette Then
Call LinkerHakenAus(s.TopLeftCell.Row, Zeichenkette, Statusbit)
End If
End Function
Stellvertretend für "eines" meiner Probleme In der ersten Sub "CheckBox2_Click()":Ich würde gerne, nachdem ich die Stringvariable sBoxNum="CheckBox2" belegt habe,
die Boolesche Variable "Zeichenkette" mit dem Ergebnis aus quasi Checkbox2.Value belegen, eben in der Art
Zeichenkette = sBoxNum.Value
Da versteht VBA aber einen Spaß und erlaubt dies nicht!
Weshalb?
Es geht doch auch in der zweiten Funktion:
Set s = ws.Shapes(sBoxNum)
Die verhält sich genauso, als hätte ich gleich Set s = ws.Shapes("Checkbox1") geschrieben.
Und wenn ich dann schonmal soweit wäre, dass ich die Ausdrücke durch Variablen-Einsatz etwas dynamischer
gestalten könnte, gäbe es auch noch die Möglichkeit, in letzter Konsequenz diesen String aus der Sub-Bezeichnung
zu extrahieren und dann erst für Befehle zu verwenden?
Ganz am Ende, hätte ich auch nichts dagegen, wenn es noch einen zusätzlichen Hinweis gäbe, wie ich mein
Vorhaben einfacher gestalten könnte.
Besten Dank für eine Antwort
Brandon