[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスのカウント方法』(トトちゃん)
コントロールツールボックスでチェックボックスを作りましたが、チェックされた数の集計をしたいのですが?
いきずまっています。教えてください。
チェックボックスをセルにリンクさせる方法と、TRUEの数を数える為の、関数?を教えてください。よろしくお願いします。
>チェックボックスをセルにリンクさせる方法 何をリンクしたいのか、よく分かりませんが、 Range("A1").Value = CheckBox1.Value とすれば、A1に True / False が表示されます。
>TRUEの数を数える為の チェックボックスの数に応じて、i の値を変更して下さい。
Sub Sample() Dim i As Long Dim cnt As Long
For i = 1 To 3 If OLEObjects("CheckBox" & i).Object.Value = True Then cnt = cnt + 1 End If Next i
MsgBox cnt
End Sub
(INA)
もう少し詳しく書かせていただきます。
例えば、A1・B1・C1・D1の上にチェックボックスを作り、そのチェックされた数をE1に、カウントしたいわけです。
こんな説明で理解して頂けるでしょうか?
VBEの標準モジュールにでもコピペして下さい。
Sub Sample() Dim i As Long Dim cnt As Long
For i = 1 To 4 '←チェックボックスの数 If OLEObjects("CheckBox" & i).Object.Value = True Then cnt = cnt + 1 End If Next i
Range("E1").Value = cnt 'E1セルに出力されます。
End Sub
マクロについては、以下のサイトが参考になると思います。 http://www.sanynet.ne.jp/~awa/excelvba/kouza.html
(INA)
質問とずれるかもしれませんが、「フォーム」の「チェックボックス」を使うのは いかがでしょう? 作り方: 表示→ツールバー→フォームにチェックを入れる 出てきたツールを使ってチェックボックスを作る。 作ったチェックボックスを右クリックして、コントロールの書式設定で、 リンクするセル(例えば$A$1)を指定する。 (チェックの有無によって、このセルに「TRUE」または「FALSE」が入ります) 後は、これらのリンクさせたセル(例えばA1〜D1)の中の「TRUE」の数を =COUNTIF(A1:D1,TRUE) で数えます。この方法ではマクロを使わずにできます。 (ちゅうねん)
[INA]さんのアイデアを参考に、Functionにしてみました。 VBEの世界で標準モジュールに下のコードを貼り付けてから、 ワークシートに=CheckCount()でチェックされた数が表示できます。 あとでチェックを変更した場合、↓のように再計算が必要です。 シートをクリックしてから [CTRL]キーを押したまま[ALT]キーを押したまま[F9]キーを押す。 (kazu)
Function CheckCount() Dim ccnt As Integer, sp As Object ccnt = 0 For Each sp In ActiveSheet.Shapes If Mid(sp.Name, 1, 8) = "CheckBox" Then If ActiveSheet.OLEObjects(sp.Name).Object.Value = True Then ccnt = ccnt + 1 End If End If Next CheckCount = ccnt End Function
For Each を使うとすべてのShapesオブジェクトを参照するので、 他にたくさんコントロールを配置していると遅くなるかもしれません。 (INA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.