[[20210819140655]] 『インデックスが有効範囲にありません』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『インデックスが有効範囲にありません』(初心者)

存在するはずのシートが選択できず困っています。

VBAでシートを追加するマクロを組み、そのシートを選択したいのですが、
変数Dを使用したシートをのみ選択できず、
「エラー9 インデックスが有効範囲にありません」で止まってしまいます。

Sheets.Add(After:=Worksheets(Worksheets.Count)).name = 変数A
Sheets.Add(After:=Worksheets(Worksheets.Count)).name = 変数B
Sheets.Add(After:=Worksheets(Worksheets.Count)).name = 変数C
Sheets.Add(After:=Worksheets(Worksheets.Count)).name = 変数D

Sheets(変数A).select
Sheets(変数B).select
Sheets(変数C).select
Sheets(変数D).select←ここでエラー

変数にはそれぞれ文字列を格納しています。

シートをインデックス番号で指定するとエラーは出ないのですが、
変数Dのシートだけエラーが出る原因が分からず、
ご教示を頂けると幸いです。
よろしくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 変数Dにはどのような文字列が格納されているのだろうか?
(ねむねむ) 2021/08/19(木) 14:27

変数A="表1"
変数B="表2"
変数C="表3"
変数D="表4"
です。
ほぼ同じ文字を使っているのにエラーが出ます。
(初心者) 2021/08/19(木) 15:09

 そのブックにあるマクロはシートを追加するモノだけなのだろうか?
(ねむねむ) 2021/08/19(木) 15:18

 ・モジュール先頭に
    Option Explicit
   を記載する。
   すべての変数を宣言して、変数名の打ち間違い等がないか確認してみる

 ・On Error Goto ,On Error Resume がもしあればいったん削除して、
  エラーが発生してないか確認する。

 ・以下で、ちゃんとシートが追加されているか確認する
   Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = 変数D

 ・コードを全部ここに書き込んで、みてもらう
(とおりすがり) 2021/08/19(木) 15:19

 >ほぼ同じ文字

 ほぼ・・・?
 全く同じでなければエラーになるのは当然なのでは。
 Sheet1、sheet1 とかは、同じとみなしてくれるみたいですけど。
(げげ) 2021/08/19(木) 20:18

 変数A,B,C,Dがほぼ同じといってるんでは?
(´・ω・`) 2021/08/19(木) 21:06

変数A,B,C,Dに入力されている文字がほぼ同じという意味です。
・変数の宣言は出来ています、また、Msgboxで変数Dに格納されている文字を表示すると問題無く出てきます。
・On Errorは使用していません
・シートの追加までは出来ています。
(初心者) 2021/08/20(金) 09:46

 マクロ全体を見ないとわからないですが、
 Sheets(変数D).select
 を
 WorkBooks(ブック名).Sheets(変数D).select
 と、親ブックまで指定してはどうでしょう
(´・ω・`) 2021/08/20(金) 09:52

MsgBoxではなく、debug.printやイミディエイトウィンドウで変数の中身を確認するとどうなりますか?
(ぬっこ) 2021/08/20(金) 09:54

どうせ目視での確認でしょうけど。とだけ言っておきます。
(げげ) 2021/08/20(金) 10:41

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.