• ベストアンサー

初心者ですみません

A2セル上にチェックボックスを配置し、チェックが入ると1行目を塗りつぶすには 1. [表示]-[ツールバー]-[フォーム]からチェックボックスを適当な位置に貼り付け 2. 1で貼り付けたチェックボックス上で、右クリック 3. [コントロールの書式設定]-[コントロール]タブをクリック          ↑   この部分の[コントロールの書式設定]-[コントロール]なんですが、わたしのでは出来ません。「サイズ」「保護」「プロパティ」「Web」しかありません。どうすればいいのでしょう? また Private Sub CheckBox1_Click()   If CheckBox1 Then     Rows(1).Interior.Color = vbRed   Else     Rows(1).Interior.Color = xlNone   End If End Sub    ↑ 上記のコードを2行目、3行目・・・と続けて実行したいのですが、コピー&ペーストでやっても出来ないのはなぜでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kooz
  • ベストアンサー率40% (6/15)
回答No.1

ちょっとやってみました。 > この部分の[コントロールの書式設定]-[コントロール] >なんですが、わたしのでは出来ません。「サイズ」「保 >護」「プロパティ」「Web」しかありません。どうすれば >いいのでしょう? メニューバーの 「表示」→「ツールバー」「コントロールツールボックス」を起動して、デザインモード(三角定規みたいなアイコンを選択)にする そこで、ダブルクリックでも無理ですか? もしくは、Alt+F11でVBAが起動します。 そして、次ですが、 簡単な方法だけレクチャーします。 1つめのチェックボックスは オブジェクト名(名前):CheckBox1 2つめのチェックボックスは オブジェクト名(名前):CheckBox2 となってます。 よって、単純にそれぞれに、プログラムを 作ってあげれば、動作します。 --------------- Private Sub CheckBox1_Click() If CheckBox1 Then Rows(1).Interior.Color = vbRed Else Rows(1).Interior.Color = xlNone End If End Sub --------------- Private Sub CheckBox2_Click() If CheckBox2 Then Rows(2).Interior.Color = vbRed Else Rows(2).Interior.Color = xlNone End If End Sub --------------- みたいな感じですね。

screams
質問者

補足

メニューバーの 「表示」→「ツールバー」「コントロールツールボックス」を起動して、デザインモード(三角定規みたいなアイコンを選択)にする そこで、ダブルクリックでも無理ですか? もしくは、Alt+F11でVBAが起動します。 出来ませんでした。デザインモードをダブルクリックしても何も起きませんでした。 Private Sub CheckBox1_Click() If CheckBox1 Then Rows(1).Interior.Color = vbRed Else Rows(1).Interior.Color = xlNone End If End Sub --------------- Private Sub CheckBox2_Click() If CheckBox2 Then Rows(2).Interior.Color = vbRed Else Rows(2).Interior.Color = xlNone End If End Sub   ありがとうございました。出来たことには出来たのですが、元々の表が1行ごとに「白」「水色」の繰り返しになっているんですが、上記のコードを実行するとチェックを外すと全て「水色」になってしまうのですが何故なんでしょう?白の行はチェックをして赤に変わりチェックを外すと「白」に戻るやり方はあるのでしょうか?

その他の回答 (2)

  • kooz
  • ベストアンサー率40% (6/15)
回答No.3

>「表示」→「ツールバー」「コントロールツールボック >ス」を起動して、デザインモード(三角定規みたいなアイ >コンを選択)にする >そこで、ダブルクリックでも無理ですか? >もしくは、Alt+F11でVBAが起動します。 >出来ませんでした。デザインモードをダブルクリックして>も何も起きませんでした。 すいません、言葉足らずでしたね。 デザインモードをダブルクリックではなく、 デザインモードをシングルクリック(選択)して、編集したいチェックボックスをダブルクリックすれば、VBAが起動しませんか? あと、チェックボックスOFF時に、 塗りつぶし無しへ戻したい場合の回避策です。 ちゃんと調べ切れてない為、 あくまで、回避策なので、参考程度でお願いします。 期待する表示にはなってますが、 見栄えはよくありません... ------------------ Private Sub CheckBox1_Click() '1行目を選択状態へ Rows("1:1").Select If CheckBox1 Then 'チェックボックス1がON状態であれば '赤で塗りつぶす Selection.Interior.ColorIndex = 3 Else 'チェックボックス1がON状態以外(OFF)であれば '塗りつぶしなし Selection.Interior.ColorIndex = xlNone End If End Sub Private Sub CheckBox2_Click() '2行目を選択状態へ Rows("2:2").Select If CheckBox2 Then Selection.Interior.ColorIndex = 3 Else Selection.Interior.ColorIndex = xlNone End If End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

[コントロールの書式設定]-[コントロール]が出ない理由は解りません。 2種類のCheckBoxの質問が混在してて良く解りませんが、参考になれば。 2行目以降のセルをアクティブにしてCheck_Add を実行するとCheckBoxを作ります。 そのCheckBoxがある1つ上の行に色をつけます。 必ず「標準モジュール」に貼り付けて下さい。 試すのは新規ブックなどのテスト環境で。 '----------------------------------------------------------------- Sub Check_Add()  With ActiveCell    ActiveSheet.CheckBoxes.Add _     (.Left, .Top, .Width, .Height).OnAction = "Check_Color"  End With End Sub '----------------------------------------------------------------- Private Sub Check_Color() Dim ch As CheckBox  With ActiveSheet   Set ch = .CheckBoxes(Application.Caller)   If ch.TopLeftCell.Row > 1 Then    If ch.Value = xlOn Then      ch.TopLeftCell.Offset(-1, 0). _        EntireRow.Interior.ColorIndex = 3    Else      ch.TopLeftCell.Offset(-1, 0). _        EntireRow.Interior.ColorIndex = 0    End If   End If  End With End Sub '-----------------------------------------------------------------

関連するQ&A