• ベストアンサー

シート見出しの色を自動で変えるには

エクセル2003を使用してます。 B2のセルに下記のような特定の文字が入力された場合、自動的にシート見出しの色を変えるようにしたいです。 (例) "(1)" が入力された場合、赤 "(2)" が入力された場合、青 "(3)" が入力された場合、黄 最大で(10)までです。 といった具合です。 VBAを使うことになるのでしょうか? VBAだとしたら、色のコードみたいなものは、下記ページの1、53、52、といった数字がそれに当たるのでしょうか? http://www.relief.jp/itnote/xls_colorindex.php 恐れ入りますが、宜しくお願い致します。

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

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

シート名のところで右クリック → コードの表示を選択 → VBE画面が出てきますので下記のコードを貼り付けて下さい。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$B$2" Then Exit Sub If Target = "" Then ActiveSheet.Tab.ColorIndex = xlNone If Target = "(1)" Then ActiveSheet.Tab.ColorIndex = 35 If Target = "(2)" Then ActiveSheet.Tab.ColorIndex = 36 If Target = "(3)" Then ActiveSheet.Tab.ColorIndex = 37 If Target = "(4)" Then ActiveSheet.Tab.ColorIndex = 38 If Target = "(5)" Then ActiveSheet.Tab.ColorIndex = 39 If Target = "(6)" Then ActiveSheet.Tab.ColorIndex = 40 If Target = "(7)" Then ActiveSheet.Tab.ColorIndex = 41 If Target = "(8)" Then ActiveSheet.Tab.ColorIndex = 42 If Target = "(9)" Then ActiveSheet.Tab.ColorIndex = 43 If Target = "(10)" Then ActiveSheet.Tab.ColorIndex = 44 End Sub B2が空白の時は色をつけないようにしています。 色の番号は好みの色に修正してください。 B2に入力すると見出しの色が変わります。 (1)~(10)は丸の中に数字に修正してください。 >色のコードみたいなものは、下記ページの1、53、52、といった数字がそれに当たるのでしょうか? その通りです。

personman
質問者

お礼

ご回答いただきまして誠にありがとうございます。 私の質問文が言葉足らずだったのですが、 全てのシートに適用したかったので、 その点も考慮いただきほんとにありがとうございます。 とても助かりました。 ありがとうございます!

その他の回答 (4)

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

ANo.3です。 補足です。 ブック内の全てのシートを対象としたい場合は VBE画面が出てきた時に左上の方にThisWorkbook表示されている所をダブルクリックして貼り付けて Private Sub Worksheet_Change(ByVal Target As Range)を Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)に修正して下さい。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>VBAはご教示くださいました一文だけでよろしかったでしょうか?  ⇒マクロ(VBA)をやるなら十分に学習が必要です。   自動にということなのでイベントプロシージャの高度なVBAになります。   (見よう見まねでコードを変更するとエクセルがフリーズする事もあり、要注意)  一例です。  シート1タブ上で右クリック→コードの表示→VBE画面にサンプルコードを貼り付けて  お試しください。(マクロ削除は貼り付けたコードを全削除してVBEを終了して下さい) サンプルコード(注意:case文の(n)は書き換えが必要です) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$2" Then Select Case Target.Value Case "(1)": c = 3 Case "(2)": c = 5 Case "(3)": c = 6 Case Else: c = xlNone End Select Sheets("sheet1").Tab.ColorIndex = c End If End Sub

personman
質問者

お礼

無知なものでほんとにお恥ずかしい限りです。 ヘタするとフリーズすることもあるのですね。 ご注意いただきましてありがとうございます。 今回はほんとに助かりました。 ありがとうございました!

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2

今回の場合、・・・を入力したことをきっかけに動作するVBAにするので、 ワークシートのイベントプロシージャ を使います。 ワークシートのイベントプロシージャ の入力操作は、下記 URL の例を参考にして下さい。 http://excelvba.pc-users.net/fol3/3_6.html この事例では、ダブルクリック を契機にしているので、ドロップダウンリストより、 イベントプロシージャを選択する時に、BeforeDoubleClick を選んでいますが、 今回は、セルのに入力された(セルが変更された)ことを契機にするので、 選択するイベントプロシージャは、 Change です。   Dim s If Range("B2") = "[1]" Then For Each s In ActiveWindow.SelectedSheets s.Tab.ColorIndex = 1 Next s ElseIf Range("B2") = "[2]" Then For Each s In ActiveWindow.SelectedSheets s.Tab.ColorIndex = 2 Next s ElseIf Range("B2") = "[3]" Then For Each s In ActiveWindow.SelectedSheets s.Tab.ColorIndex = 3 Next s ElseIf Range("B2") = "[4]" Then For Each s In ActiveWindow.SelectedSheets s.Tab.ColorIndex = 4 Next s End If  入力するVBAの一例です。   ※ (1) を入力すると -1 と判定されるので、 今回は、[1] にしてあります。

参考URL:
http://excelvba.pc-users.net/fol3/3_6.html
personman
質問者

お礼

ご回答いただきまして誠にありがとうございます。 うまく出来ました!ありがとうございました。 私の質問文が言葉足らずだったのですが、 全てのシートに適用したかったので、 ANo.3、5様の方法を使わせていただきました。 イメージ通りの形が出来てほんとに良かったです。 ありがとうございました!

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

>VBAを使うことになるのでしょうか?  ⇒ご認識の通りです。 >色のコードみたいなものは、  ⇒ご認識の通りです。 仮にSheet1タブを赤に変更する場合のコードです。 Worksheets("Sheet1").Tab.ColorIndex = 3

personman
質問者

お礼

ご回答いただきまして誠にありがとうございます。 1つ訂正させていただきたいのですが、 質問文の中に、(1)、(2)、(3)とありますが、 本来は、まるいち、まるに、まるさん、(丸印の中に数字)です。 自動で変換されてしまったようです。 失礼致しました。 VBAはご教示くださいました一文だけでよろしかったでしょうか? これだけだと、どの文字に対してどの色という指定が無いように思いますが? VBAは未経験なもので、すみません。

関連するQ&A

  • シート見出しの色

    全シートを対象として A1セルに整数が入力されたらそのシートのシート見出しが赤になり。A1セルに文字が入力されたらそのシートのシート見出しが黄色になるマクロの記述を教えてください。よろしくお願いします。

  • 条件により、シート見出しの色を変更したい

    エクセル2007を使用してします。 ある報告書の全シートを対象として A1セルにkさんの名前が入力されたらそのシートのシート見出しが緑になり、A2セルにmさんの名前が入力されたらそのシートのシート見出しが青になり、なおかつ、kさんとmさん2人の名前が入力されたらそのシート見出しの色が黄色に自動でなるマクロの記述を教えてください。よろしくお願いします。

  • シート見出しが青色で、そのシートのセルを集計に

    こんばんは エクセル2010VBAで、シート見出しが青色で、そのシートのセル(L15、L21、L27・・・L45)と(P15、P21、P27・・・P45)の値を集計用紙にB2とC2の列に貼り付けるにはどうしたらよいのでしょうか? 色々な名前でシート見出しが作られており、唯一、目的シートが青色で分別されています。 見出し色指定のコードの作り方が、わかりません。 宜しくお願い致します。

  • ワードの見出しの設定がうまくいきません 見出し1を

    ワードの見出しの設定がうまくいきません 見出し1を緑 見出し2を青 見出し3を黄色 にしたいのですが、画像のようになってしまいます。 どうしたらいいでしょうか? windows10 ワード2019です

  • セルの値によって、シート見出しの色を変更したい

    エクセル2007を使用してします。以前に、 「ある報告書の全シートを対象として A1セルにkさんの名前が入力されたらそのシートのシート見出しが緑になり、A2セルにmさんの名前が入力されたらそのシートのシート見出しが青になり、なおかつ、kさんとmさん2人の名前が入力されたらそのシート見出しの色が黄色に自動でなるマクロの記述を教えてください」と質問し、 Private Sub Worksheet_Change(ByVal Target As Range) a1 = Range("a1").Value a2 = Range("a2").Value f = 0 If a1 = "k" Then f = f or 1 If a2 = "m" Then f = f or 2 c = Switch(f = 1, 4, f = 2, 5, f = 3, 6, True, xlNone) ActiveSheet.Tab.ColorIndex = c End Sub 上記のように御回答を頂きましたが、今後、入力する名前が変更する事を考えて、A1・A2セル共に、 何か文字が入力されたら(もしくは空白でなければ)と条件を変えたいと思い、色々試してみたのですが、 上手くいきませんでした。 何方か、条件に合うコードの記述を教えてください。宜しくお願いします。

  • VBAで一番後尾のシート見出しの色を変更したい

    WIN XP エクセル2003 BOOK内の一番後尾のシート見出しの色を変更したいのですが 下記コードでは見出しの色が変わりません。 何処が間違っているのかわかりません。ご教授お願い致します。 Sub シート見出し色変更() Dim N As Integer Dim sh As Worksheet N = ActiveWorkbook.Worksheets.Count Worksheets(N).Activate Set sh = ActiveSheet sh.Tab.ColorIndex = 3 Worksheets(1).Select End Sub

  • エクセル VBA シート見出し色の参照について

    エクセルVBAでブック内のシート見出し色が赤のものだけ全てを 印刷し、なければ、”印刷対象はありません”とメッセージを1回だけ出すマクロを作成したいのですが、どのようなモジュールを作成すればいいかわかりません。 教えていただけますでしょうか。

  • Excelのシート見出しについて

    Excel2010を使用しています。 シートを選んでいるときのみ、シートの見出しの色を変える事が出来ないでしょうか? 例えば10数枚シートを作成した場合に、今どのシートで作業をしているかとういのが、標準では作業中のシート見出しの色が白色で、その他は薄い灰色と少し分かりづらいためシートを選択している見出しのみが分かりやすい色に変わるように設定ができないのかと思いまして。例えば赤色など。 ちょっと分かりづらい説明ですがよろしくお願いします。

  • VBAでドロップダウンリストを連動させたものを作るには?

    VBAでドロップダウンリストを連動させたものを作ることが出来ますでしょうか? 今まで入力規則の設定をつかって見ていましたがどうやら実現不可能と思われることが分かってきました。 VBAでの連動したリストの代替案を考えていますが・・・ いい方法は無いでしょうか? このページのようなことがやりたいと思っています。 http://www.relief.jp/itnote/archives/000822.php

  • エクセル条件付き書式(空白でない場合に色を付ける、偶数行・奇数行毎に色を変える)

    エクセルの条件付き書式の設定で、 (1)セルが空白でない場合に色を付ける、 (2)偶数行・奇数行毎に色を変える という2つのことを同時に行う方法があれば 教えていただけないでしょうか? (※空白セルは、色なしに設定) (1)=A1<>"" → 赤 (2)=MOD(ROW(),2)=0 → 青  =MOD(ROW(),2)=1 → 黄 上記の設定の場合、空白セルが青・黄になります。 入力すると赤に変わります。 こちらが行いたいことは、 【空白セルは「色なし」で、入力すると、 奇数行は黄色、偶数行は青になることです。】 例 ABC 1* ←A1は黄 2 * ←B2は青 3 A1とB2以外のセルは色なしとなるようにしたい。 ただし、入力した場合に色がつくようにしたい。 よろしくお願いします。

専門家に質問してみよう