こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルマクロでシート名を条件にする方法

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

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

投稿日時 - 2009-04-22 07:05:53

QNo.4899395

困ってます

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

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

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

投稿日時 - 2009-04-22 07:41:57

お礼

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

投稿日時 - 2009-04-23 03:44:04

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(3)

ANo.3

一例です。
シート全体の色を変えましたが、もしシート見出しだったら
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 構文ですのでいろいろ応用できると思います。

投稿日時 - 2009-04-22 09:10:24

お礼

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

投稿日時 - 2009-04-23 03:52:14

ANo.2

シート名を見つけるメソッドなどありません。
シートはどうして(どのような方法で)特定できるのか、初歩の段階で、勉強すべきなんだ。一番基礎的なことだ。
(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
のようにネストして繰り回す。
ーーー
シートタブの色は着けても、そのシートを選択していると、線状にしか見えないので、関係ないシートを選ぶとタブに色が現れるのは知ってるでしょうね。

投稿日時 - 2009-04-22 09:10:15

お礼

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

投稿日時 - 2009-04-23 03:48:23

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-