- ベストアンサー
シート全体対象の設定方法と複数のセル範囲の参照方法
ブック名「全体.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")みたいな) やり方を知りたいです。 初歩的な質問で申し訳ありません。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、 全シートの 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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
疑問点 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 を実行して、参考にしてください。
お礼
お礼が大変遅くなり申し訳ありませんでした。 評価だけさせていただきますのでよろしくお願いします。
お礼
お礼が大変遅くなり申し訳ありませんでした。 評価だけさせていただきますのでよろしくお願いします。