Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Checkboxen auf Form in Schleife durchlaufen

184 views
Skip to first unread message

Jan Lorenz

unread,
May 13, 2009, 8:50:09 AM5/13/09
to
Hallo,

helft mir mal bitte: ich m�chte in einer VBA-Prozedur alle Checkboxen des
Forms durchlaufen und deren Check-Status abfragen.
Habt ihr einen Ansaz f�r mich?

Viele Gr��e
Jan


Mark Doerbandt

unread,
May 13, 2009, 8:57:19 AM5/13/09
to
Hallo, Jan,

Jan Lorenz:

> helft mir mal bitte: ich m�chte in einer VBA-Prozedur alle Checkboxen des
> Forms durchlaufen und deren Check-Status abfragen.
> Habt ihr einen Ansaz f�r mich?

For Each
Controls
ControlType

... reicht das als Ansatz?

Gruss - Mark

--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitr�ge senden.

Michael

unread,
May 13, 2009, 8:57:00 AM5/13/09
to
Hallo Jan,
sind die Checkboxen bekannt oder sollen diese mit aus dem Formular
ausgelesen werden?
Michael
"Jan Lorenz" <knar...@gmx.de> schrieb im Newsbeitrag
news:%239G5al8...@TK2MSFTNGP02.phx.gbl...

Gunter Avenius

unread,
May 13, 2009, 9:09:12 AM5/13/09
to
Hallo Jan,

Jan Lorenz schrieb folgendes:


> helft mir mal bitte: ich m�chte in einer VBA-Prozedur alle
> Checkboxen des Forms durchlaufen und deren Check-Status abfragen.
> Habt ihr einen Ansaz f�r mich?

Dim ctl As control
For Each ctl In Me.Controls
If ctl.ControlType = acCheckBox Then
Debug.Print ctl.Value
End If
Next

Gru�
Gunter
--
__________________________________________________________
Access FAQ: http://www.donkarl.com
home: http://www.avenius.com - http://www.AccessRibbon.de
http://www.ribboncreator.de

3. SQL Server-Entwickler-Konferenz - N�rnberg im Mai
http://www.donkarl.com/?SEK

Jan Lorenz

unread,
May 14, 2009, 4:01:29 AM5/14/09
to
Hi,

"Gunter Avenius" <nos...@avenius.net> schrieb im Newsbeitrag
news:sbzylt2la7jq$.dlg@ID-300043.user.individual.de...


> Dim ctl As control
> For Each ctl In Me.Controls
> If ctl.ControlType = acCheckBox Then
> Debug.Print ctl.Value
> End If
> Next

Danke f�r den Ansatz. Genau so etwas suche ich. Aber leider funktioniert das
nicht: die Eigenschaft ctl.Value gibt es nicht.

Jan


Jan Lorenz

unread,
May 14, 2009, 4:12:56 AM5/14/09
to
Hallo nochmal,

"Jan Lorenz" <knar...@gmx.de> schrieb im Newsbeitrag

news:uHT1xoG1...@TK2MSFTNGP05.phx.gbl...

aber so gehts:

Dim ctl As Control
Dim ctl2 As CheckBox

For Each ctl In Me.Controls
If ctl.ControlType = acCheckBox Then

Set ctl2 = ctl

if ctl2.Value = -1 then ...
End If
Next


Viele Gr��e
Jan


Gunter Avenius

unread,
May 14, 2009, 4:16:21 AM5/14/09
to
Hallo Jan,

Jan Lorenz schrieb folgendes:

Deine Access Version?
Zeige uns mal Deinen Code, welcher nicht funktioniert.

Josef Poetzl

unread,
May 14, 2009, 4:26:40 AM5/14/09
to
Hallo!

Jan Lorenz schrieb:


> "Jan Lorenz" <knar...@gmx.de> schrieb im Newsbeitrag

>> Danke f�r den Ansatz. Genau so etwas suche ich. Aber leider funktioniert das
>> nicht: die Eigenschaft ctl.Value gibt es nicht.

>> news:uHT1xoG1...@TK2MSFTNGP05.phx.gbl...
>
> aber so gehts:
> Dim ctl As Control
> Dim ctl2 As CheckBox
>
> For Each ctl In Me.Controls
> If ctl.ControlType = acCheckBox Then
> Set ctl2 = ctl
>
> if ctl2.Value = -1 then ...
> End If
> Next

Du h�ttest auch direkt ctl.Value verwenden k�nnen, da die
Objektreferenz von ctl auf das Checkbox-Element verweist.
"as Control" erfordert late binding. ctl.Value wird zwar �ber
IntelliSense nicht angeboten, sobald aber eine Checkbox-Instanz (oder
en anderes Steuerelement, das Value unterst�tzt) daran gebunden wird,
steht diese Eigenschaft zur Verf�gung.

Deine letzte Variante hat aber einen Vorteil: es ist nur ein einziger
Latebinding-Zugriff erforderlich. Ab /Set ctl2 = ctl/ l�uft alles �ber
Early binding ab. Damit vermeidest du Code-Fehler, da auf die korrekte
Verwendung der Methoden und Eigenschaften beim Kompilieren gepr�ft
werden kann.

mfg
Josef

--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Karl Donaubauer

unread,
May 14, 2009, 4:44:27 AM5/14/09
to
Jan Lorenz wrote:
> ...
> aber so gehts:
>
> Dim ctl As Control
> Dim ctl2 As CheckBox
>
> For Each ctl In Me.Controls
> If ctl.ControlType = acCheckBox Then
> Set ctl2 = ctl
>
> if ctl2.Value = -1 then ...
> End If
> Next

Zusᅵtzlich zu Josefs Erlᅵuterungen noch ein kleiner Warnhinweis:

Wenn das da oben bei dir funktioniert, hast du das Problem hier nicht,
aber grundsᅵtzlich sollte man bei solchen Durchlᅵufen berᅵcksichtigen,
dass Kontrollkᅵstchen auch in einer Optionsgruppe vorkommen kᅵnnen.
Dann haben sie wirklich keine Value-Eigenschaft.

Man kann dazu entweder den entsprechenden Fehler abfangen
oder z.B. prᅵfen, ob das Parent-Objekt eh das Formular ist:

If ctl.ControlType = acCheckBox And ctl.Parent.Name = Me.Name Then

--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
3. SQL Server-Entwickler-Konferenz - Nᅵrnberg im Mai

Jan Lorenz

unread,
May 14, 2009, 4:46:49 AM5/14/09
to
Hallo,

"Gunter Avenius" <nos...@avenius.net> schrieb im Newsbeitrag

news:1izyyo8f...@ID-300043.user.individual.de...

> Deine Access Version?
> Zeige uns mal Deinen Code, welcher nicht funktioniert.

Vergesst es. Es funktioniert auch mit deiner Version. Was damit nicht geht,
ist das Intellisense, also ctl.Value zeigt er nicht an. Aber der Zugriff
funktioniert trotzdem. (Access 2003).

Jan


0 new messages