• ベストアンサー

シート全体対象の設定方法と複数のセル範囲の参照方法

ブック名「全体.xls」の全シート対象に、 (A1:B10) (D1:F10)の範囲だけの数値を調べ、 その数値が50以上のときに背景色を赤色にするマクロを作りたいですが。 Sub セルの値が50以上の時、背景色を赤色にする() Dim i As Integer i = ActiveCell.Value With ThisWorkbook("全体").Range("A1,B10") If i >= 50 Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = xlNone End If End With With ThisWorkbook("全体").Range("C1,F10") If i >= 50 Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.ColorIndex = xlNone End If End With End Sub こうしても、 With ThisWorkbook("全体").Range("A1,B10") のところでエラーではじかれます。シート全体の("A1,B10")を対象にしたいですが、指定方法が分かりません。 ちなみにシート数は追加・削除あるので一定ではないです。 また、("A1,B10")と("C1,F10")にて個別にコードを書くのではなく 同時に設定したいけれど、(.Range("A1,B10")&("C1,F10")みたいな) やり方を知りたいです。 初歩的な質問で申し訳ありません。よろしくお願いします。

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 全シートの A1:B10とD1:F10のセル全部を赤にした例です。 これを応用すれば、できると思います。 Public Sub f() Dim wsheet As Worksheet Dim r As Range, r1 As Range For Each wsheet In ThisWorkbook.Worksheets wsheet.Select Set r1 = Union(Range("a1:b10"), Range("d1:f10")) For Each r In r1 r.Interior.Color = vbRed Next Next End Sub

Alma2005
質問者

お礼

お礼が大変遅くなり申し訳ありませんでした。 評価だけさせていただきますのでよろしくお願いします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

疑問点 ThisWorkbook("全体").Range("A1,B10") ブックーシートーセル(Range)の階層構造になっているはずだが、WorkSheetレベルの指定はどうなりますか ーー 推奨提案 質問の、コードの方法では、 実行時点での状態で、セルに色が付いたり付かなかったりします。 エクセルVBAでは、条件付き書式があり、これのマクロに記録をとり、修正したほうが、即時反応性という意味でよいと思います。 FormatConditions.Add ・・ という類のものをセルに設定することです。 >シート全体の("A1,B10")を対象にしたいですが Sub test01() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets MsgBox sh.Name Next End Sub を実行して、参考にしてください。

Alma2005
質問者

お礼

お礼が大変遅くなり申し訳ありませんでした。 評価だけさせていただきますのでよろしくお願いします。

関連するQ&A