アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロ実行時、自動で背景色を変えたい。
C列にあるチェックボックスをチェックするとB列に「TRUE」が入り、下記コードで背景色が変わります。
これをD列の背景色が変わるように変更したいができません。条件付き書式ではなくマクロでの変更方法を教えてください。
Sub セルがTrueならグレー()
Dim i As Integer, j As Integer
For i = 4 To 12
For j = 2 To 6
If Cells(i, j).Value >= "True" Then 'TRUEの場合
Cells(i, j).Interior.ColorIndex = 15 'グレー
Else
Cells(i, j).Interior.ColorIndex = 0 '色なし
End If
Next j
Next i
End Sub

「マクロ実行時、自動で背景色を変えたい。 」の質問画像

A 回答 (4件)

こんにちは



説明文に無いのではっきりしませんけれど、B列の値はチェックボックスのリンクセルに設定されているものと推測しました。
ご提示のコードが2重ループになっている理由がさっぱりわかりませんけれど、質問文の内容だけなら2重にする必要はまったくないはず。

>条件付き書式ではなくマクロでの変更方法を教えてください。
条件付き書式を利用すればチェックを変更したら即反映されますけれど、マクロだといちいち実行しないと反映されません。
それでもよいのなら・・

※ B列の色は変更せずに、D列の色を変更するものと解釈しました。

Sub セルがTrueならグレー()
Dim i As Long, c As Long
For i = 4 To 12
If Cells(i, 2).Value = True Then c = 15 Else c = xlNone
Cells(i, 4).Interior.ColorIndex = c
Next i
End Sub
    • good
    • 1

#3訂正します


フォームコントロール
コピペで済ましてしまいました・・
With ActiveSheet.CheckBoxes(Application.Caller).TopLeftCell
If CheckBox1 Then ×

With ActiveSheet.CheckBoxes(Application.Caller).TopLeftCell
If CheckBoxes(Application.Caller).Value = xlOn Then

Withの使い方がなんかな・・と思ったら 書き換えてください
    • good
    • 1

こんにちは


マクロで・・ならば、チェックボックスのClickイベントに書く方が良くないですか?
ActiveXコントロールのチェックボックス1の場合
Private Sub CheckBox1_Click()
With CheckBox1.TopLeftCell
If CheckBox1 Then
.Offset(, -1) = "True"
.Offset(, 1).Interior.ColorIndex = 15
Else
.Offset(, -1) = "False"
.Offset(, 1).Interior.ColorIndex = 0
End If
End With
End Sub

ActiveXではなさそうね
ActiveXコントロールでないのなら(フォームコントロールなら) 
フォームコントロールのチェックボックスで(マクロの登録)

Sub セルがTrueならグレー()
With ActiveSheet.CheckBoxes(Application.Caller).TopLeftCell
If CheckBox1 Then
.Offset(, -1) = "True"
.Offset(, 1).Interior.ColorIndex = 15
Else
.Offset(, -1) = "False"
.Offset(, 1).Interior.ColorIndex = 0
End If
End With
End Sub

チェックする度にチェックしたコントロールの左右のセルを変更します
注意
A列に設置すると.Offset(, -1)なので1004エラーが返ります
    • good
    • 1
この回答へのお礼

ありがとうございます。できました!

お礼日時:2022/11/09 10:51

valueを、textに変えても無理?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!