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

エクセルマクロで、
たとえば、「りんご」「ぶどう」「みかん」「いちご」「なし」という5つのシートがあって、
シート名が「りんご」「みかん」「いちご」のシートはシートの色を赤にして、その他のシートはシート色を青にする、といったことをしたいのですが、マクロではどのようにしたらよいのでしょうか。

実際にはシートが20シートあり、手処理で色を変更するという単純作業をやっているため、自動化したいと考えています。
マクロについては初心者のため、自分ではどのように書いたらよいかわかりませんので、どうかよろしくお願いいたします。

A 回答 (3件)

とりあえずはこんな感じで。


標準モジュールとかシートモジュールに以下のコードを書いて実行してみてください
シートの色というのはシート見出しの色ということでいいんですかね?

Sub Test
Dim ws As Worksheet

For Each ws In Worksheets
If ws.Name = "りんご" Or ws.Name = "みかん" Or ws.Name = "いちご" Then
'シート見出しの色を赤にする
ws.Tab.ColorIndex = 3
Else
'シート見出しの色を青にする
ws.Tab.ColorIndex = 5
End If
Next
End Sub
    • good
    • 1
この回答へのお礼

シート見出しの色のことです。
頂いたコード実行したら解決しました。
すばやい対応どうもありがとうございました。

お礼日時:2009/04/23 03:44

一例です。


シート全体の色を変えましたが、もしシート見出しだったら
ws.Cells.Interior.ColorIndex = ci を
ws.tab.ColorIndex = ci に変えてください。

Sub test01()
Dim ws As Worksheet
For Each ws In Worksheets
Select Case ws.Name
Case "りんご", "みかん", "いちご": ci = 3
Case Else: ci = 5
End Select
ws.Cells.Interior.ColorIndex = ci
Next
End Sub

Select Case 構文ですのでいろいろ応用できると思います。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
やってみたらできました。Select Case 構文使いこなせるように
勉強したいと思います。

お礼日時:2009/04/23 03:52

シート名を見つけるメソッドなどありません。


シートはどうして(どのような方法で)特定できるのか、初歩の段階で、勉強すべきなんだ。一番基礎的なことだ。
(1)名前
(2)インデックス番号
(3)ActiveSheet(本質問と関係なし)
(4)Previous,Next(本質問と関係なし)
(5)すべてのシートを名前を捉えて1つづ聞いて捉える
Sub test01()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Name = "Sheet1" Or sh.Name = "Sheet3" Then
MsgBox sh.Name
End If
Next
End Sub
をやってみてご覧。
または
Sub test03()
For i = 1 To Sheets.Count
If Sheets(i).Name = "Sheet1" Or Sheets(i).Name = "Sheet3" Then
MsgBox Sheets(i).Name
End If
Next i
End Sub
なてのもある。
ーー
(1)は
IFをつかわずとも、少数の場合は
Sub test02()
Worksheets("Sheet1").Tab.ColorIndex = 6
Worksheets("Sheet3").Tab.ColorIndex = 6
End Sub
のように列挙して(並べた)らしまい。
泥臭いが意外に、後からこのコードを見ると、一見して内容が良くわかる良さが有る。
ーー
選択するシート名が多い場合は
配列やセル範囲にシート名を持って
Sub test04()
Dim sh As Worksheet
s = Array("Sheet2", "Sheet4") '選択するシートを配列に
For Each sh In Worksheets
For Each shx In s
MsgBox sh.Name & "-" & shx
If sh.Name = shx Then
sh.Tab.ColorIndex = 5
End If
Next
Next
End Sub
のようにネストして繰り回す。
ーーー
シートタブの色は着けても、そのシートを選択していると、線状にしか見えないので、関係ないシートを選ぶとタブに色が現れるのは知ってるでしょうね。
    • good
    • 0
この回答へのお礼

詳しく解説いただきどうもありがとうございます。
もっと基本的なことを勉強する必要があると反省しています。

お礼日時:2009/04/23 03:48

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A