プロが教えるわが家の防犯対策術!

エクセルのシートで
sheet1のA1に○と入っていたら
sheet2のA1をグレーに塗りつぶすようにするマクロのコードがあればおしえていただきたいです。
また、sheet1のA1に○がある時はsheet2のA1がグレー。sheet1のB1に○がある時はsheet3のA1がグレーに…といったようにsheet1を基準として同じようなことをsheet3や4にも行いたいのです。

本当はルールの設定でも出来ると思うのですが、シート数が多いのと、ルール設定をするとエクセル全体が重くなる気がするのであまり使いたくないのです。

よろしくお願いします。

A 回答 (3件)

こういうことでしょうか。


  If Sheets("Sheet1").Range("A1").Text = "○" Then
   With Sheets("Sheet2").Range("A1").Interior
    .ThemeColor = 1
    .TintAndShade = -0.1
   End With
  End If

Excel2010だけど
    • good
    • 0

最も「初歩的」な書き方をするならば


TESTという名前のマクロ(※プロシージャ)を作成するとして

Sub TEST()

 If ThisWorkbook.Sheets("Sheet1").Range("A1").Value = "○" Then

  ThisWorkbook.Sheets("Sheet2").Range("A1").Interior.ColorIndex = 15

 End If

End Sub

と書いて、TESTを実行すれば、お望みの結果になります
それ以降は、シート名の書き換えで対応できるでしょう。

ここではインデント(行頭の字下げ)をスペース(空白記号)で
書いてますが、実際の場合は、タブ(TABキー)で
字下げするのが良いです。

おそらく(違っているかもですが)
つまづいておられる点は、「灰色に塗る」という時に
Range("A1").Interior.Color = vbRed みたいなやり方を
しようとしたら、vbGrayは無かったので灰色どうしよう???
となったのでは?

色指定については
https://www.sejuku.net/blog/32288
のWEBサイトを参考にしてみて下さい

灰色っぽい色としては

Range("A1").Interior.ColorIndex = 15
または
Range("A1").Interior.Color = RGB(192,192,192)


Range("A1").Interior.ColorIndex = 16
または
Range("A1").Interior.Color = RGB(128,128,128)

あたりが妥当な候補かと思いますが
RGB()関数を使った書き方ならば、三つの値を同じ値にした
RGB(0,0,0) から RGB(255,255,255)までのものを選んで使えば
真っ白~真っ黒までの間の任意の濃度(256通り)のグレーを
表現できます。

※RGBに慣れれれば、どんな色もお好みで思うがままなので楽しいです

本当を言うと
上記の「初歩的」な書き方は、とても長ったらしいので
With ~ End With
という構文でまとめて書くか

「オブジェクト変数」という変数を複数個用意して
ThisWorkbook.Sheets("Sheet1").Range("A1") や
ThisWorkbook.Sheets("Sheet2").Range("A1") を
そこへ代入してしまえば

かなりスッキリして読みやすいマクロにはなるのですが
「オブジェクト変数」代入の際には
Setを付け忘れるとエラーになるだとか色々あるので

文面からお察しするに、これらを使うのは、難易度が1~2段階UP
してしまうかも…なので
それは次の機会にするのが良いかもしれませんですね

では!
    • good
    • 0

自分で考えるレベルの内容です


そのくらいわからないと マクロは使えないでしょう
    • good
    • 0

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