
エクセルマクロで、
たとえば、「りんご」「ぶどう」「みかん」「いちご」「なし」という5つのシートがあって、
シート名が「りんご」「みかん」「いちご」のシートはシートの色を赤にして、その他のシートはシート色を青にする、といったことをしたいのですが、マクロではどのようにしたらよいのでしょうか。
実際にはシートが20シートあり、手処理で色を変更するという単純作業をやっているため、自動化したいと考えています。
マクロについては初心者のため、自分ではどのように書いたらよいかわかりませんので、どうかよろしくお願いいたします。
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
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 構文ですのでいろいろ応用できると思います。
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
のようにネストして繰り回す。
ーーー
シートタブの色は着けても、そのシートを選択していると、線状にしか見えないので、関係ないシートを選ぶとタブに色が現れるのは知ってるでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Excel(エクセル) エクセルのマクロ設定 1 2023/04/05 19:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) vbaマクロについて 【シート2】をもとに【シート1】に有るものを「有り.csv」としてデスクトップ 3 2023/05/07 22:30
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) Excelについて 1 2023/03/06 10:26
- Excel(エクセル) 添付写真上のExcelシートのように時間と曜日ごとに担当者が振り分けられているシートがあります。 例 1 2023/03/08 13:02
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
-
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
VBAで指定シート以外の選択
Visual Basic(VBA)
-
-
4
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
5
VBA シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
6
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
7
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
8
特定のシート名のシートのみ除外して、それ以外のシート名のシートをすべて集約する方法(VBA)
Excel(エクセル)
-
9
【VBA】シート名に特定文字が入っていたらマクロを実行したいです。
Visual Basic(VBA)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
15
エクセル: セルの枠を超えて表示
Excel(エクセル)
-
16
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
エクセルVBAの記述方法について
Excel(エクセル)
-
19
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
20
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
ハイパーリンクでジャンプした...
-
EXCELの図形(テキストボックス)...
-
エクセルで複数のシートに画像...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルシートの見出しの文字...
-
特定のシートのみ再計算させな...
-
エクセルのシー名を二段表示に...
-
エクセル、特定のシートにパス...
-
エクセルのファイルサイズが急...
-
EXCELで存在しないシート...
-
エクセルで誤ってF11キーを押す...
-
Excelで条件に一致したものだけ...
-
エクセル、別のシートの表をポ...
-
Accessのテーブルを既存のExcel...
-
Excelでマクロ設定したが反映さ...
-
Wordで差し込み印刷時に表示す...
-
Excel、Aのシートにあって、Bの...
-
エクセルの複数シートでのリン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
特定のシートのみ再計算させな...
-
EXCELの図形(テキストボックス)...
-
エクセルで複数のシートに画像...
-
エクセルのファイルサイズが急...
-
エクセル、特定のシートにパス...
-
Accessのテーブルを既存のExcel...
-
エクセルのシー名を二段表示に...
-
エクセルの2つのシートを並び...
-
EXCELで存在しないシート...
-
エクセルの複数シートでのリン...
-
エクセルで、シートの名前を変...
-
EXCELの「シートの見出し」のフ...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
エクセルを開くとメニューバー...
-
エクセル、別のシートの表をポ...
おすすめ情報