PDA

Vollständige Version anzeigen : CheckBox wie ein Array ansprechen


sturzi
04.09.2003, 21:01
Hallo miteinander

Ich habe ein kleines Darstellungsproblem. Ich möchte via UserForm eine Materialliste erstellen. Das ganze Funktioniert eigentlich Prima, doch mir gefällt die Darstellung nicht. Ich habe insgesammt 14 CheckBoxen und muss bei jeder, die .value = true ist, den .capiton in einem String sammeln. Gibt es keine Möglichkeit, diese 14 mal ansprechen in eine Schlaufe zu intergrieren (Wie for i = 1 to 14...). Für eure Hilfe bin ich sehr dankbar

Hier noch ein kleines Beispiel

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Dim</span> Text1 <span class="TOKEN">As</span> <span class="TOKEN">String</span>
&nbsp;
<span class="TOKEN">With</span> CheckBox1
<span class="TOKEN">If</span> .Value = <span class="TOKEN">True</span> <span class="TOKEN">Then</span> Text1 = Text1 &amp; .Caption
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">With</span> CheckBox2
<span class="TOKEN">If</span> .Value = <span class="TOKEN">True</span> <span class="TOKEN">Then</span> Text1 = Text1 &amp; .Caption
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
&nbsp;
MsgBox (Text1)</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)


MFG Sturzi

immelmann
05.09.2003, 13:18
Hallo sturzi,
dazu würde ich eine Optionsgruppe erstellen, in der Deine 14 Checkboxen sind. DENN, die einzelnen controls innerhalb der Optionsgruppe haben einen index und der lässt sich in einer SCHLEIFE :-) ansprechen.
Falls Du unter Access arbeitest, dann erstelle die Optionsgruppe mit dem Assistenten. Jedes Control innerhalb der Gruppe hat einen Optionswert (Eigenschaften im Entwurfsmodus).
Könnte so aussehen
Dim cntrl As Control

For Each cntrl In Me.chkArray.Controls
cntrl.Value = Text1 & cntrl.Caption
Next cntrl

Gruß Torsten

Aquarii
05.09.2003, 13:30
Hallo Sturzi,

das kannst Du - wenn Du auf eine Optionsgruppe verzichten willst, - z.B. so lösen:

Dim Text1 As String, strFeld As String, strbez As String
Dim intI As Integer

Text1 = ""
For intI = 1 To 14
strFeld = "Checkbox" & intI
strbez = "bez" & intI
If Me(strFeld).Value = True Then Text1 = Text1 & Me(strbez).Caption
Next

MsgBox (Text1)

Wobei die Checkboxen von Checkbox1 bis Checkbox14 und die dazugehörigen Bezeichner von bez1 bis bez14 benannt sind.

Unschön sit allerdings noch, daß die Bezeichnungen in der MsgBox aufeinanderhängen. Eventuell solltest du hier noch ein Leerzeichen oder ein Komma einfügen, etwa so:

Then Text1 = Text1 & " " & Me(strbez).Caption




@Torsten

Einmal vom Platz weggegangen und nicht aktualisieren gedrückt, und schon hinkt man wie die alte Fastnacht hinterher... ;)

sturzi
05.09.2003, 14:10
Sälu immelmann und hallo Aquarii

zuerst mal danke für eure Hilfe. Ich werde noch heute diese zwei Vorschläge testen. Ich denke mein Problem hat sich damit erledigt. Ob Optionsgruppen in Excel möglich sind, weiss ich aber noch nicht, werd ich aber sicher herausfinden.

Ach ja Then Text1 = Text1 & " " & Me(strbez).Caption werd ich natürlich auch übernehmen


Nochmals besten Dank


Gruss Sturzi