- ベストアンサー
エクセルのチェックボックス
こんにちは。 エクセルのチェックボックスについて一括でチェックをはずす方法を教えて頂きたいのですが、 チェックボックスにチェックを入れると自動で指定した範囲から価格を持ってくるという関数を使ったファイルを作成しました。 下記の(1).(2)の方法でそのチェックボックスのチェックを一括ではずすことは可能でしょうか? (1)そのファイルをチェックが入った状態で保存し閉じても、 再度ファイルを開いた段階で、すべてのチェックがはずれている。 (2)普通の数値が入ったセルに関しては”記録マクロ”を使用し、ボタンを押せば、数値が削除されるという事はできました。 それと同じような感じでボタンを押せば、チェックがはずれる。 もし(1).(2)の方法で可能であればその方法を教えて頂けないでしょうか? また、両方とも不可能ならば他の方法でチェックボックスを一括で外す方法教えて頂けないでしょうか? ちなみに、私は基本的な関数などは問題なく使用できますが、記録マクロに関しても初めて使用した程度のエクセル認識力ですので、いくつか方法があるならば、一番簡単だと思われる方法を教えて頂きたいです。 知識不足でお恥ずかしいですが、 ぜひ、教えて頂けます様、宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(1) >普通の数値が入ったセルに関しては”記録マクロ”を使用し、 決めたセルの値を0か空白にするのは、マクロの記録でそのものズバリとか、推測で少し変えて、できます。実際済んだようです。 しかしこれはVBAを使わないとできなかったわけです。 ーー 同じように (2) >チェックボックスについて一括でチェックをはずす方 のもVBAを使わないとできないでしょう。違うのは、(1)と違って マクロの記録が使えない、ことです。操作しても記録しない。 それでVBAの基本に戻って、それも中上級的にむつかしい、コントロールの扱いのコードを作らなければなりません。 10数個以内のチェックボックスなら Private Sub CommandButton1_Click() CheckBox1.Value = False CheckBox2.Value = False CheckBox3.Value = False CheckBox4.Value = False CheckBox5.Value = False End Sub のようなのをやってみてはどうですか。 ただAuto_Open()ないなどでは Sub test01() With Worksheets("Sheet3") .CheckBox1.Value = False .CheckBox2.Value = False .CheckBox3.Value = False .CheckBox4.Value = False .CheckBox5.Value = False End With End Sub でないといけないかも知れない。 色々必要付帯知識が多く、私もわかってない点があるかもしれないし、必要な点を説明しきれないから、これでやったら。 注意 (A)シートにチェックボクスを貼り付けている例のことです。 (B)コントロールツールボックスのチェックボックスの例です。 Sheet3の部分は実状の、チェックボクスを貼り付けているシート名 に変えること。 ーー べたべた並べないでやろうとすると Sub test02() Dim obj For Each obj In Worksheets("Sheet3").DrawingObjects ' MsgBox obj.Name If Left(obj.Name, 8) = "CheckBox" Then ' MsgBox obj.Index obj.Object = False End If Next End Sub など。 名前をCheckBoxXX以外に変えたりしていると動かないかも。
その他の回答 (2)
ちょっと、邪道かも知れませんが・・・。 Private Sub CommandButton1_Click() On Error GoTo Err_CommandButton1_Click Dim I As Integer For I = 1 To 100 ActiveSheet.OLEObjects("CheckBox" & I).Object.Value = 0 Next I Exit_CommandButton1_Click: Exit Sub Err_CommandButton1_Click: Resume Exit_CommandButton1_Click End Sub
- zap35
- ベストアンサー率44% (1383/3079)
チェックボックスにも色々あります。質問文から推察して「ツールバー右クリック」→「コントロールツールボックス」でシートに埋め込んだ チェックボックスのことでしょうか? (その場合デザインモードでCheckBoxを選択すると、数式バーには EMBED("Forms.CheckBox.1","") と表示されます だとすると、チェックボックスを埋め込んだ「シート名右クリック」→「コードの表示」で開く画面に以下のマクロを貼り付けてください シートが開かれるたびにチェックボックスのチェックが外れます。 Private Sub Worksheet_Activate() Dim oObj As OLEObject For Each oObj In ActiveSheet.OLEObjects If oObj.progID = "Forms.CheckBox.1" Then oObj.Object = False End If Next oObj End Sub ブックを開いたタイミングで1回だけ実行するなら、以下のマクロをThisWorkbookのモジュールシート(VBE画面のVBAプロジェクトでThisWorkbook右クリック→コードの表示で開くモジュールシート)に貼り付けて下さい。3行目のシート名は要修正です。 Private Sub Workbook_Open() Dim oObj As OLEObject For Each oObj In Worksheets("Sheet1").OLEObjects 'シート名は要修正 If oObj.progID = "Forms.CheckBox.1" Then oObj.Object = False End If Next End Sub
お礼
みなさん、本当にありがとうございます。 何とか、完成できました。 感謝・感謝です(^▽^*)