dポイントプレゼントキャンペーン実施中!

エクセル2003を使用してます。
B2のセルに下記のような特定の文字が入力された場合、自動的にシート見出しの色を変えるようにしたいです。

(例)
"(1)" が入力された場合、赤
"(2)" が入力された場合、青
"(3)" が入力された場合、黄
最大で(10)までです。

といった具合です。
VBAを使うことになるのでしょうか?
VBAだとしたら、色のコードみたいなものは、下記ページの1、53、52、といった数字がそれに当たるのでしょうか?
http://www.relief.jp/itnote/xls_colorindex.php

恐れ入りますが、宜しくお願い致します。

A 回答 (5件)

シート名のところで右クリック → コードの表示を選択 → 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、といった数字がそれに当たるのでしょうか?
その通りです。
    • good
    • 2
この回答へのお礼

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

お礼日時:2012/01/26 14:22

ANo.3です。


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

>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
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/26 14:25

今回の場合、・・・を入力したことをきっかけに動作する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
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/01/26 14:18

>VBAを使うことになるのでしょうか?


 ⇒ご認識の通りです。

>色のコードみたいなものは、
 ⇒ご認識の通りです。

仮にSheet1タブを赤に変更する場合のコードです。
Worksheets("Sheet1").Tab.ColorIndex = 3
    • good
    • 0
この回答へのお礼

ご回答いただきまして誠にありがとうございます。
1つ訂正させていただきたいのですが、
質問文の中に、(1)、(2)、(3)とありますが、
本来は、まるいち、まるに、まるさん、(丸印の中に数字)です。
自動で変換されてしまったようです。
失礼致しました。

VBAはご教示くださいました一文だけでよろしかったでしょうか?
これだけだと、どの文字に対してどの色という指定が無いように思いますが?
VBAは未経験なもので、すみません。

お礼日時:2012/01/25 12:23

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

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