いつもお世話になっております。
下記のコードでおしえてくれませんでしょうか
条件にあったシートに同じ作業をしたいのですが、
うまくいきません。
Dim ws As Worksheet
Dim i As Long, Sw()
i = 0
For Each ws In Worksheets
If ws.Name = "作業中" Or ws.Name = "Sheet7" Then
ReDim Preserve Sw(i)
Sw(i) = ws.Name
i = i + 1
End If
Worksheets(Sw).Tab.ColorIndex = 3 'ここでエラーになります。
Next
No.4ベストアンサー
- 回答日時:
こんばんは、
めぐみん_様が回答されている通り、一括でシートタグの色変更は出来ません。
エラーメッセージの ”このプロパティ・・メソッドはサポートしていません” が回答のすべてのようです。
参考程度として
試しに
自動記録マクロで記録すると
Sheets(Array("作業中", "Sheet7")).Select
Sheets("作業中").Activate
With ActiveWorkbook.Sheets("作業中").Tab
.Color = 255
.TintAndShade = 0
End With
With ActiveWorkbook.Sheets("Sheet7").Tab
.Color = 255
.TintAndShade = 0
End With
複数シートを選択しているにもかかわらず、個々のシートに対しシート名を明示的に指定して実行しています。
また、エラーにならない Sheets(Array("作業中", "Sheet7")).Selectを
Sheets(Array("作業中", "Sheet7")).Tab.ColorIndex = 3のようにすると
同様のエラーが返ってきます。
オブジェクトに対しては、基本的に明示的にするみたいなのかもしれません。
代替え案もすでにありますが、Nextの外で処理をするなら、他の処理と合わせて、、ご存知(定番)の、For Each ~ や
For i = 0 To UBound(Sw)
Worksheets(Sw(i))・・・
みたいになるのでは、と思います。
No.3
- 回答日時:
No.1です。
WorkSheetsを分割し1個ずつ処理する方法は確かご存じであるとの前提で、今回は配列に入れて一括で出来るかどうかのご質問とお見受けしましたが違いましたでしょうか?
No.2
- 回答日時:
以下のようにされてはいかがでしょうか。
Dim ws As Worksheet
Dim i As Long, Sw()
i = 0
For Each ws In Worksheets
If ws.Name = "作業中" Or ws.Name = "Sheet7" Then
ReDim Preserve Sw(i)
Sw(i) = ws.Name
i = i + 1
ws.Tab.ColorIndex = 3 'ここに挿入
End If
Next
上手くいきました。
ありがとうございました。
一度ws.Tab.ColorIndex = 3
これに近いのやったんですけど
場所が違っていたのかも
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) シート削除のマクロで「deleteメソッドは失敗しました」となります。助けてください! Sub 不要 6 2022/09/08 16:41
- Visual Basic(VBA) でシートをコピーしたときに 見えないようにする方法 1 2022/04/10 20:27
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
XL:BeforeDoubleClickが動かない
-
セルの値によって、シート見出...
-
【ExcelVBA】全シートのセルの...
-
【VBA】色のついたシート名を取得
-
エクセルのシート名変更で重複...
-
ブック名、シート名を他のモジ...
-
ExcelVBA シート名を複数セルか...
-
VBAでオブジェクト変数にsetし...
-
Worksheet_Changeの内容を標準...
-
同じ作業を複数のシートに実行...
-
VBAの天才来てください
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
別のシートを参照して計算する方法
-
【VBA】指定した検索条件に一致...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
excelのマクロで該当処理できな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報
はいそのとおりです。