VBA初心者です。
VBAで複数のシートを選択するという動作を行う時、シート名を変更するとエラーになってしまうのですが、どうすれば回避できるのでしょうか?オブジェクト名?が使用できるらしいのですが、エラーになってうまく動作しません。指定の仕方を変える必要があるのでしょうか?
例えば、
Sheets(Array("第1週", "第2週", "第3週", "第4週", "第5週")).Select
Sheets("第1週").Activate
と記述してあって、シート名の"第1週"を"9月1日"とかに変更したら、当然エラーになりますが、
左のプロジェクトエクスプローラにある、Sheet1(第1週)の名前の変わらないオブジェクト名"Sheet1"の方で指定したいと思うのですが、単純に名前を置き換えても動作しません。どのように指定すればよいのでしょうか?
No.3
- 回答日時:
>オブジェクト名?が使用できるらしいのですが、
はい。オブジェクト変数に格納してから扱うようにすれば、
シート名が変更されても、同じシートを選択してくれます。
シート名変更前に対象をオブジェクトに格納し、
以下のように『オブジェクト変数(インデックス番号)』
で対象のシートを選択するようにすればシート名に
左右されずに目的のシートを操作できます。
以下のコードでは『第1週』を「mySt(1)」で扱う事ができ、
「mySt(2)、mySt(3)・・・・mySt(5)」で『第5週』のシートとなります。
『第2週』を飛ばした場合でも、左から1、2と
インデックス番号になりますので「mySt(1)~mySt(4)」で
『第1週、第3週、第4週、第5週』を扱うことになります。
■サンプルコード
Sub test()
'オブジェクト変数を用意
Dim mySt As Variant
'シートをオブジェクト変数へ格納
Set mySt = Worksheets(Array("第1週", "第2週", "第3週", "第4週", "第5週"))
'シートを選択
mySt.Select
'シート選択をいったん解除
Worksheets(1).Select
'シート名を変更(選択セルの左から1番目のシート名)
mySt(1).Name = "9月1日"
'シートを選択
mySt.Select
End Sub
やってみました。動作は問題なくしましたが質問内容と少し違いました。
質問の意図は、vbaでシート名を変更するのではなく、シート名を変更してもマクロが動作するという意味だったので・・・。
でも初心者なので参考になりました。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) エクセル VBAの構文について 2 2023/02/10 18:26
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) findメソッドの変数について 6 2023/06/23 08:01
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
シート名を変更してもVBAに影響がないようにしたい
Excel(エクセル)
-
シート名が変わる場合のVBAの設定の仕方
Excel(エクセル)
-
Excelマクロ ファイル名が変わるとエラーになる
Excel(エクセル)
-
-
4
マクロについて教えてください。 ファイル名を変更すると、デバックエラー
Word(ワード)
-
5
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
6
VBAでシートコピー後、シート名が重複している時の処理
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
EXCELのSheet番号って変更できる!?
Visual Basic(VBA)
-
9
VBAでシートコピー後、シート名が重複している時の処理
Access(アクセス)
-
10
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
11
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
12
エクセルで、シートの名前を変えても式にエラーが出ないようにしたい
Excel(エクセル)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
15
ファイル名変更後も、マクロを動作させたいのですが?
Access(アクセス)
-
16
ExcelVBAでBookを開く時にファイル名の一部だけを指定で
Access(アクセス)
-
17
【Excel VBA】ファイル名が一定でないファイルの指定方法
Excel(エクセル)
-
18
括弧があるとHYPERLINKで飛べない?
Excel(エクセル)
-
19
Excel VBA シート名変更時、重複していたら連番を付けたい
その他(Microsoft Office)
-
20
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
【Excel VBA】データ貼り付け先...
-
ハイパーリンクでジャンプした...
-
エクセルで複数のシートに画像...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
エクセルでリンク貼り付けした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセル、特定のシートにパス...
-
Accessのテーブルを既存のExcel...
-
エクセル、別のシートの表をポ...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
エクセルの2つのシートを並び...
-
エクセルシートのタブの階層化表示
-
アクセスからエクセルのシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
エクセル、特定のシートにパス...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
アクセスからエクセルのシート...
-
特定の複数のシートに同じ処理...
-
エクセルで、シートの名前を変...
おすすめ情報