Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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
Inhaltsverzeichnis

VBA-Code .Value u.A. aus Variablen bilden

VBA-Code .Value u.A. aus Variablen bilden
14.08.2014 22:01:03
Brandon
Guten Abend,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code .Value u.A. aus Variablen bilden
14.08.2014 22:45:10
Luschi
Hallo Brandon,
daß Problem der Auswertung, welche Checkbox gerade vom User gecheckt wurde, ist nur durch ein Klassenmodul vernünftig hinzukriegen. Deshalb hier mal ein Beispiel dazu.
https://www.herber.de/bbs/user/92122.xls
Gruß von Luschi
aus klein-Paris

AW: VBA-Code .Value u.A. aus Variablen bilden
15.08.2014 13:12:00
Daniel
Hi
wenns viele Checkboxen sind, die alle im Prinzip den selben Code benötigten, dann ist es oft günstiger, statt der ActiveX-Checkboxen die Formular-Steuerelemente zu verwenden.
Diesen kannst du ein Makro aus einem allgemeinen Modul zuweisen, welches dann bei Klick auf das Steuerelement ausgeführt wird, dabei kannst du für alle Checkboxen das selbe Makro verwenden.
In diesem Makro kannst du dann über Application.Caller herausfinden, welche Checkbox angeklickt wurde und damit das Makro aufgerufen hat.
eine andere Alternative bei sehr vielen Checkboxen ist, einfach über das BeforeDoubleClick_Event die Zellen direkt als Checkbox zu verwenden.
Gruß Daniel

Anzeige
AW: VBA-Code .Value u.A. aus Variablen bilden
15.08.2014 13:31:08
Brandon
Moin,
damit nicht der Eindruck entsteht, ich stelle mich tot,
ein kurzes Dankeschön für die Hinweise.
Ich werde mir dieses Wochenende beide Hinweise
vornehmen und Rückmeldung geben.
Nebenbei erwähnt:
Es soll nicht nur ein Klickereignis ausgewertet
werden, sondern auch über eine MsgBox in bestimmten
Konstellationen abgefragt werden,
ob der Klick versehentlich gewesen ist, und dann
im Zeifelsfall über VBA wieder Rückgängig gemacht
werden, ohne dabei ein erneutes (negatives oder positives)
Klickereignis zu generieren.
Das läuft auch alles schon.
Muss mal schauen, wie ich das in die neuen Vorschläge
einbaue.
Ach ja, und ganz am Ende würde mich immer noch
interessieren, weshalb für den geschilderten Fall
" Boolian = Stringvariable.Value "
wobei Stringvariable Checkbox1 ist (und das Ergebnis von
Checkbox1.variable demnach wahr oder falsch ist)
Excel meckert?
Gruß
Brandon

Anzeige
AW: VBA-Code .Value u.A. aus Variablen bilden
15.08.2014 23:19:10
Daniel
Ich glaube über
ActiveSheet.OLEObjects("Checkbox1").object.value = True
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige