• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2002、OS=WinXPです。エクセルので、特定セルに入力さ)

エクセルVBAでセルの値に応じてシート見出しの色を変える方法

このQ&Aのポイント
  • エクセル2002、OS=WinXPで特定セルの値に応じてシート見出しの色を変えたい場合、VBAを使用する方法について説明します。
  • マクロコードを作成し、セルの値を条件分岐させて色の変更を行います。セルの値がAAAの場合は緑色(カラーNo=50)、BBBの場合はピンク色(カラーNo=7)、それ以外の場合は白色(カラーNo=2)になります。
  • マクロを実行するためには、ActiveWorkbook.ActiveSheet.Tab.ColorIndexを使用してシートの色を指定します。また、マクロを全ブックに反映させる場合はActiveSheetの部分を修正します。

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

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

セルB3の値がAAAの場合 の値とは文字列のことと思うが、VBAでは文字列は”AAA"にするのは常識。 数値と文字列を峻別して考えないと。 ーーー シートをアクチブにしたときというイベントに関連させてみると ThisWorkbookのイベントで Private Sub Workbook_SheetActivate(ByVal Sh As Object) ' 会社名に合わせてシート見出し色を変更() Select Case Sh.Range("B3").Value Case "AAA" Sh.Tab.ColorIndex = 50 Case "BBB" Sh.Tab.ColorIndex = 7 Case Else Sh.Tab.ColorIndex = 2 '白 End Select End Sub ーーー Case文の方がすっきりすると思うが。 またAAA,AAA(2)などがあれば、両者同じ色にしたいということではないのかな。 であれば文字列AAAを含むという判定が必要になる。それは質問のコードお呼び上記のコードではダメ。 Instr関数などを使う方法でできる。

a_nyan
質問者

お礼

今回は、AAA(2)は必要なかったのですが、きっと必要になるときが出てきますので、そのときは参考になせていただきます。ありがとうございました。。。 無事、相手先の会社名に応じてシート見出し色を変えることに成功しました。ありがとうございました。

その他の回答 (3)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.4

Sub Macro3() For i = 1 To Sheets.Count Select Case Sheets(i).Range("B3").Value Case "AAA" Sheets(i).Tab.ColorIndex = 50 Case "BBB" Sheets(i).Tab.ColorIndex = 7 Case Else Sheets(i).Tab.ColorIndex = 2 '白 End Select Next i End Sub でどうでしょう。

a_nyan
質問者

お礼

Case文のほうがスッキリしていますね。回答ありがとうございました。無事、望んだ操作ができました。ありがとうございました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

何もおきないってことは、どのロジックも通過していないことなので、 条件式が間違っていると想定されます。 こういうときは、 コマンド記載を調べても進まないときあるので、 内容をメッセージボックス表示させるなどでどこをどう通過しているかを把握する、 わなをしかけてみる、 ブレイクポイントを設定してみる、 ところから始めてください。 コーディングできるのだからコーディングして調べていく。 記載は問題ないのにおかしいときは、対象としているデータ値「=AAA」が おかしいときです。 また、 「If ActiveSheet.Range("B3").Value = AAA Then」 「End If」 の順番で処理されます、とか 「If ActiveSheet.Range("B3").Value = AAA Then」 「Else: ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 2」 「End If」 の順番で処理されます、とか これだけのヒントでも全然違います。 「ActiveSheet.Range("B3").Value」は判定したいセルになっているか。 「If ActiveSheet.Range("B3").Value = AAA Then」の「AAA」記載。 「Else: 」の「:」記載はコメントの意?。

a_nyan
質問者

お礼

原因が"AAA”になっていなく、AAAだったことがわかりました。ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

ActiveSheetはそのままでも、AAAやBBBは文字列ですので "AAA" などにすることが必要ですね。

a_nyan
質問者

お礼

"AAA"にすることで動きました。ありがとうございました。

関連するQ&A