- ベストアンサー
Accessのコントロールの数え方
- Access 2003のフォームに配置されたチェックボックスの数を知る方法と、チェックが入っているチェックボックスの数を知る方法について教えてください。
- ネットで検索した結果、指定のコードを使用すればチェックボックスの数とチェックが入っているチェックボックスの数を取得できるようですが、具体的にはどのように利用すれば良いのでしょうか?
- 回答方法を教えていただきたいです。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
蛇足回答ですが、標準モジュールにて Sub QQ() On Error Resume Next Dim ctl As Control Dim i As Integer, j As Integer, k As Integer For Each ctl In Forms!フォーム1 '(フォームビューで開いてあること) i = i + 1 Debug.Print "名前", ctl.Name Debug.Print "タイプ", TypeName(ctl) Debug.Print "値", ctl.Value '値を持てないモノもありますので On Error Resume Next で逃げてます Debug.Print i & " 個目///////////////" If TypeName(ctl) = "CheckBox" Then j = j + 1 If ctl = True Then k = k + 1 End If End If Next MsgBox "チェックボックス数=" & j & " 入り数=" & k End Sub イミディエイトウィンドウに出力されるので色々調べられます。 フォームにチェックボックスが一杯あって数えるのが大変なら フォームのモジュールになりますが Function chkCount() As Integer Dim ctl As Control For Each ctl In Me.Controls If TypeName(ctl) = "CheckBox" Then If ctl = True Then chkCount = chkCount + 1 End If End If Next End Function としておいて、適当なテキストボックスを作成し そのコントロールソースに、=chkcount() と入れてあげればカウントされます。 チェックボックスにチェックを入れても即座には反映されないので F9 を押してやってください。 などなど。
その他の回答 (1)
- piroin654
- ベストアンサー率75% (692/917)
たとえば、フォームのボタンクリック時のイベントで、 Private Sub コマンド12_Click() Dim i As Integer Dim ctl As Control i = 0 For Each ctl In Me.Controls If TypeOf ctl Is CheckBox Then i = i + 1 End If Next ctl MsgBox i End Sub のように。
お礼
ご回答ありがとうございます!typeof isを知りませんでした。勉強になりました。ありがとうございます。
お礼
コードまで書いて頂き非常にたすかりました。勉強になります、本当にありがとうございました!