ご教示お願いします。。。
シートAのセルA1に”1111”と入力します。
シート追加マクロを作成し、1111というシートを追加することまではできましたが、
今度はシート削除マクロを作成し、同じく、”1111”のシートを削除しようと思います。
セルA1は都度変わるので、変数を指定し、その変数を使用して削除マクロを作成。
<既に1111シートはあるものと仮定します。>
X = Range("A1") '---(1)XにA1セルに入力された数値をセット(1111がセットされる)
Application.DisplayAlerts = False '---(2)(削除)確認メッセージをOFF
Worksheets(X).Select '---(3)ワークシートX(X=1111)を選択
ActiveSheet.Delete '---(4)選択したワークシートを削除
Application.DisplayAlerts = True '---(5)(削除)確認メッセージをONに戻す。
Worksheets("Sheet1").Select '---(6)ワークシートSheet1を選択して終わり。
上記のマクロを作成し実行すると、(3)で【実行時エラー’9’:インデックスが有効範囲にありません。】
のエラーメッセージがでます。
変数を使用せずに、直接[Worksheets("1111").Select]を明記すると問題なく通ります。
意味が分からず・・・。
変数の指定方法に間違いがあるのでしょうか?
お詳しい方がいらっしゃいましたら、ご教示の程よろしくお願いします。。。
No.2ベストアンサー
- 回答日時:
変数宣言していないのであれば、
X = Range("A1")
で「X」「1111」という数値が代入されます。
Worksheets(X).Select
とした時、Worksheetsはインデックス番号でも指定できるので、
1111番目のシートを選択しようとします。なので、エラーです。
Dim X As String
と最初に、変数宣言するべきです。
例:
Worksheets(1).Select
とすると、1番目のシートが選択されます。
Worksheets("1").Select
とした場合、「1」という名前のシートを選択されます。
No.3
- 回答日時:
エクセルjはシートのセルに数字(半角全角ともすべて数字)を入れると、数値化してしまう強力な力が働く仕組みがあります。
だから数字を入れた時点でそのセルの値は数値になります《注意)
Sheets(1)のように()内に数字を入れると、シートのインデクッス番号を(見た目で、シートタブの左から何番目かの数(もちろん約10を越えるとシートタブが見えませんが、その辺は観念的に想像してください)を指定したものと看做され、1111番目のシートなど現在使ってませんでしょうから、該当なしエラーになる。
シートの特定には
(1)名前
(2)インデクす番号
(3)ActiveSheet
(4)Previous,など
の特定方法があります。
この点まだ学習してないのにいろんなことをやろうとしているのが原因です。
(注意)で書いたことも、VBAとは離れて、エクセルの基本的知識で、エクセルのことも十分判ってないと、VBAはスムーズに組めません。
またシート名を数字のみにすることは、余りすすめられないことと思います。
ーーー
Sub test01()
'Sheets("1").Delete
x = Worksheets("2").Range("A1")
x = Trim(Str(x))
MsgBox x
Sheets(x).Delete
End Sub
のようなのが、可能なようだ(テスト済み)。
またSelectとActive式は早く脱却のこと。
詳細な回答をありがとうございました!
とても勉強になり助かりました。
確かに知識も無いまま色々と作成しようと思ってた自分が甘いことは重々承知しておりますが、
本やサイトよりも、質問することでピンポイントの回答が返ってくることが1番知識を高めて
いく上で大切なことと自分では思っています。
甘い考えですが、分からないことなどは今後も皆様の知識を吸収しつつ努めていこうと
思っていますので、もしよろしければ今後もよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 2 2022/11/18 15:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
指定したシート名以外を非表示...
-
ワークシートそのものの色を変...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
エクセルのシート連番の振り直し
-
accessへエクセルの複数のシー...
-
InputBoxに入力した言葉をシー...
-
【Excel VBA】データ貼り付け先...
-
エクセルマクロでシート名を条...
-
エクセルのシー名を二段表示に...
-
Accessのテーブルを既存のExcel...
-
特定の複数のシートに同じ処理...
-
エクセル、特定のシートにパス...
-
エクセルで誤ってF11キーを押す...
-
Excelで条件に一致したものだけ...
-
エクセル、別のシートの表をポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
エクセルでブック内の倍率がバ...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルの2つのシートを並び...
-
EXCELの図形(テキストボックス)...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
エクセルで、シートの名前を変...
-
エクセルでリンク貼り付けした...
-
エクセル、特定のシートにパス...
-
accessへエクセルの複数のシー...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
おすすめ情報