エクセル2002、OS=WinXPです。エクセルので、特定セルに入力された文字列によってシート見出しの色を変えたいですが、VBA式がうまくいきません。
もし、セルB3の値がAAAの場合、シート見出しの色を緑(カラーNo=50)にする。
もし、セルB3の値がBBBの場合、シート見出しの色をピンク(カラーNo=7)にする。
もし、セルB3の値が上記以外の場合、シート見出しの色を白(カラーNo=2)にする。
というふうにしたいと考えています。マクロを用いていろ番号を調べたところ、上記Noでした。
Sub 会社名に合わせてシート見出し色を変更()
'
' ActiveSheet.Select
If ActiveSheet.Range("B3").Value = AAA Then
ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 50
ElseIf ActiveSheet.Range("B3").Value = BBB Then
ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 7
Else: ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 2
End If
End Sub
上記式で実行をクリックしても実行されません。無反応です。調べて直してもだめでした。上記の式の間違いを教えていただけませんでしょうか???
さらに、このマクロを今開いているブック全体に反映するためには、ActiveSheet の文字を削除すればよいでしょうか??すみませんが、詳しい方、あわせてご回答いただけますでしょうか?
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関数などを使う方法でできる。
今回は、AAA(2)は必要なかったのですが、きっと必要になるときが出てきますので、そのときは参考になせていただきます。ありがとうございました。。。
無事、相手先の会社名に応じてシート見出し色を変えることに成功しました。ありがとうございました。
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
でどうでしょう。
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: 」の「:」記載はコメントの意?。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
首吊りどこ締めるの
-
射精をして1週間以内に尿検査を...
-
変な話しになります。尿検査で...
-
白血球が多いとどんな心配があ...
-
今朝、毎朝の習慣でオナニーし...
-
1日前の検尿
-
検便についてです。 便は取れた...
-
男です。昨日の午後3時くらいに...
-
勃起する時って痛いんですか? ...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
彼女のことが好きすぎて彼女の...
-
中出しをするとお腹が痛い・・・。
-
小数点以下を繰り上げたものを...
-
EXCELで式からグラフを描くには?
-
2つの数値のうち、数値が小さい...
-
値が入っているときだけ計算結...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報