こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

初心者ですみません

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行目・・・と続けて実行したいのですが、コピー&ペーストでやっても出来ないのはなぜでしょうか?

投稿日時 - 2005-01-25 22:42:01

QNo.1185895

すぐに回答ほしいです

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

ちょっとやってみました。

> この部分の[コントロールの書式設定]-[コントロール]
>なんですが、わたしのでは出来ません。「サイズ」「保
>護」「プロパティ」「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
---------------
みたいな感じですね。

投稿日時 - 2005-01-25 23:25:06

補足

メニューバーの
「表示」→「ツールバー」「コントロールツールボックス」を起動して、デザインモード(三角定規みたいなアイコンを選択)にする
そこで、ダブルクリックでも無理ですか?
もしくは、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行ごとに「白」「水色」の繰り返しになっているんですが、上記のコードを実行するとチェックを外すと全て「水色」になってしまうのですが何故なんでしょう?白の行はチェックをして赤に変わりチェックを外すと「白」に戻るやり方はあるのでしょうか?

投稿日時 - 2005-01-25 23:50:16

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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

投稿日時 - 2005-01-26 22:09:46

ANo.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
'-----------------------------------------------------------------

投稿日時 - 2005-01-26 00:05:38

あなたにオススメの質問