[[20051106170938]] 『複数のチェックボックスを変数で管理する方法』(マクロ初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数のチェックボックスを変数で管理する方法』(マクロ初心者)

[複数のチェックボックスの動作を変数で管理する方法]

  WindowsXP、 Excel2003を使っています。
 チェックボックスにチェックを入れればセルに○を表示するようにしているのですが、
 チェックボックスの数が多く、1〜60くらいあります。
 とりあえず数個、手元の教則本にならって下記のように記述してみたのですが。。。

 Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        Range("A1") = "○"
    Else
        Range("A1") = ""
    End If
 End Sub

 Private Sub CheckBox2_Click()
    If CheckBox2.Value = True Then
        Range("A2") = "○"
    Else
        Range("A2") = ""
    End If
 End Sub

 同様の記述を60個羅列するのは何とも見苦しく、メンテも手がかかると思いまして、
 変数を用いることにより簡略な記述にできないかと思っております。

 マクロ自体、教則本やネットで調べて必要な記述を切り貼りしている初心者ですので
 このようなIfを用いる記述に変数を活用できるものかどうかの判断もできないのです。
 不可能ということでしたら、ひたすら同じ記述を繰り返すしかないとあきらめますが、
 よろしくご教授お願いいたします。


 これで出来ませんか?

 Sub test()
 Dim i As Integer
 With Sheets("sheet1")
    For i = 1 To 60
        If .OLEObjects("CheckBox" & i).Object.Value = True Then
                .Cells(i, "a") = "○"
        Else
            .Cells(i, "a") = ""
        End If
    Next
 End With
 End Sub
 (seiya)


 早速のご回答ありがとうございます。
 seiyaさんの記述で試してみたのですが、A1(...A2..)に○が表示されませんでした・・ 
 標準モジュールに記述すればよかったのでしょうか?

 それから、A1セルでなく、C13セルに表示させたい場合は、.Cells(i, "a")の部分を
 どのように変更したらよいのでしょうか?
(マクロ初心者)

 シート上(Sheet1)にCheckBoxが60個配置してあり、それぞれ"CheckBox1","CheckBox2"..
 であると想定しています。
 どのモジュールでもSheet1で括っているので作動するはずですが?
 どのように実行されましたか?

 >A1セルでなく、C13セル
 .Cells(i+12, "c") = "○" に変更
 (seiya)

 (MSE)
 多分、質問者の方は
 チェックボックスをクリックしても
 セルに○が入らないと言いたいのだと思います。
 希望の動作をさせるには、

 Private Sub CheckBox1_Click()
 test
 End Sub

 Private Sub CheckBox2_Click()
 test
 End Sub
 ・
 ・
 ・
 Private Sub CheckBox60_Click()
 test
 End Sub

 のようにイベントプロシージャを
 60個記述する必要があるのではないでしょうか?

 なるほど、そういうことだったのですね。
 面倒ですけど、それが良いと思いますね。(seiya)

 seiya様、MSE様、ありがとうございました。
 質問の書き方がわかりにくくて申し訳ありませんでした。
 やはり60個順次記述していくのが一番確実なんですね。
 がんばって作ります^^
 (マクロ初心者)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.