エクセルマクロで、
たとえば、「りんご」「ぶどう」「みかん」「いちご」「なし」という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 シート名が一致した場合の転記内容について
Visual Basic(VBA)
-
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
エクセルVBA Ifでシート名が合致したら別ファイルから転記する場合のElse IfとForの書き方
Visual Basic(VBA)
-
-
4
【VBA】シート名に特定文字が入っていたらマクロを実行したいです。
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
7
VBA セルの値と同じ名前のシートにデータを補填するやり方を教えてください エクセルのブックがありま
Excel(エクセル)
-
8
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
VBAでシート名を選んで転記する方法
Visual Basic(VBA)
-
11
マクロを特定の複数シートで実行する方法
Excel(エクセル)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
VBAでダブルコーテーション入りの数式をセルにセットしたい
Visual Basic(VBA)
-
14
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
15
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
18
エクセルでエラーが出て困っています。
Excel(エクセル)
-
19
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
20
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
【ExcelVBA】マクロの入ったシ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
Wordで差し込み印刷時に表示す...
-
EXCELの図形(テキストボックス)...
-
【Excel VBA】データ貼り付け先...
-
エクセルで複数のシートに画像...
-
エクセル、特定のシートにパス...
-
特定の複数のシートに同じ処理...
-
エクセルシートのタブの階層化表示
-
エクセルの2つのシートを並び...
-
アクセスからエクセルのシート...
-
エクセルでリンク貼り付けした...
-
Accessのテーブルを既存のExcel...
-
エクセルのシート名のフォント...
-
Excel 全シート上のボタンを削...
-
エクセルのシート連番の振り直し
-
エクセルを開くとメニューバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
エクセル、特定のシートにパス...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
アクセスからエクセルのシート...
-
特定の複数のシートに同じ処理...
-
エクセルで、シートの名前を変...
おすすめ情報