• ベストアンサー

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

エクセルマクロで、 たとえば、「りんご」「ぶどう」「みかん」「いちご」「なし」という5つのシートがあって、 シート名が「りんご」「みかん」「いちご」のシートはシートの色を赤にして、その他のシートはシート色を青にする、といったことをしたいのですが、マクロではどのようにしたらよいのでしょうか。 実際にはシートが20シートあり、手処理で色を変更するという単純作業をやっているため、自動化したいと考えています。 マクロについては初心者のため、自分ではどのように書いたらよいかわかりませんので、どうかよろしくお願いいたします。

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

  • ベストアンサー
  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.1

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

sakaharu3
質問者

お礼

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

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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 構文ですのでいろいろ応用できると思います。

sakaharu3
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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 のようにネストして繰り回す。 ーーー シートタブの色は着けても、そのシートを選択していると、線状にしか見えないので、関係ないシートを選ぶとタブに色が現れるのは知ってるでしょうね。

sakaharu3
質問者

お礼

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

関連するQ&A