- ベストアンサー
マクロを使って一度に複数チェックする方法
- EXCEL2000でマクロを使って、ボタンを押し一度に複数のチェックボックスにチェックをつける方法を教えてください。
- ボタンをクリックするとチェックボックスがチェックされるのではなく、押すボタンによってチェックボックスの組み合わせが決まっている場合にチェックする方法が知りたいです。
- 例えば、チェックボックスが1から10あるとします。Aボタンを押すと、1と3と5がチェックされ、Bボタンを押すと、2と4と6がチェックされるような方法です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
チェックボックスは二種類ありますから、どちらと書かれていないので、二種類出しておきます。なるべく、Sheetモジュールをお使いください。 プロシージャ名は、適宜、換えてください。当然ですから、並びと、Index は、一致させてくださいね。本来、Form側のようにそれぞれのコントロールにコレクションがあると、Index を使ったほうが楽ですが、OLEObjectのほうは、種類がいくつもあるので、名前のほうが安全です。 '<シートモジュール> 'コントロールツール側 Sub ToolButton_Click() Dim i As Integer, j As Variant With Sheet1 For i = 1 To 4 .OLEObjects("CheckBox" & i).Object.Value = False Next i For Each j In Array(1, 3, 5) .OLEObjects("CheckBox" & j).Object.Value = True Next j End With End Sub 'フォームツール側 Sub FormButton_Click() Dim i As Variant, Chkbtn As Object With Sheet1 For Each Chkbtn In .CheckBoxes Chkbtn.Value = False Next Chkbtn For Each i In Array(1, 3, 5) .CheckBoxes(i).Value = True Next i End With End Sub 'フォームツール側 '(これは失敗しやすいです。理由は名前は変わることがあるから) Sub FormButton2_Click() Dim i As Variant, Chkbtn As Object With Sheet1 For Each Chkbtn In .CheckBoxes Chkbtn.Value = False Next Chkbtn For Each i In Array(2, 4, 6) .CheckBoxes("Check Box " & i).Value = True Next i End With End Sub 後、Arrayの値を、サブルーチンの引数にすれば便利です。上記のコードをサブルーチンにしてしまいます。そうすれば、似たような種類のコードを何度も書かずにすみます。
その他の回答 (2)
- mshr1962
- ベストアンサー率39% (7417/18945)
チェックONだけで良いなら Private Sub CommandButton1_Click() CheckBox1.Value = True CheckBox3.Value = True CheckBox5.Value = True End Sub
お礼
早速の回答ありがとうございました。 試してみたところ、なにやらエラーが出たのですが 私の操作の問題と思います。 今回の質問は解決しました! ありがとうございました。
- 6dou_rinne
- ベストアンサー率25% (1361/5264)
Private Sub CommandButtonA_Click() CheckBox1.value = true CheckBox3.value = true CheckBox5.value = true End Sub 以下、同様に... というのでは?
お礼
早速の回答ありがとうございました。 試してみたのですが、何やらエラーが・・・ 恐らく私の操作が悪かったのだと思います。 今回の質問は解決しました。 ありがとうございました。
お礼
チェックボックスは二種類についての記述がなく、質問内容が中途半端ですみませんでした。 チェックボックスは、フォームツール側です。 教えて頂いたとおりに作ると、うまくできました! とても困っていましたので本当に助かりました。 ありがとうございました。