• ベストアンサー

ExcelVBAエラーについて

下記のマクロを起動したときにエラーインデックスが有効範囲にありませんというエラーメッセージがでます。  Sheets("masta").Select C_COUNT = Sheets("masta").Cells(2, 3).Text For i = 1 To C_COUNT M_KAKOBA(i) = i Next i For i = 1 To C_COUNT Sheets("masta").Select Cells(3, 5) = i 変更したのはSheets("masta")の1列目の9行から2列の11行目にデータをいれました。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 > Sheets("masta").Select 既回答の配列のミス以外では、シート[masta]にアクセスできないと同様の エラーになりそうですね。可能性のひとつですが。 Select 文があるところから推測するに、いろいろシート間を飛ぶマクロ なのではないですか? 例えば、異なるブックをアクティブにした後、シート[masta]のあるブック をアクティブに戻さないまま > Sheets("masta").Select を実行しているとか。 以下は余談です。 ワークシート上のセルの値を使う場合、特にユーザーからの入力値を使う 場合は、どのような値が入力されるか予測できません。 例えば、Sheets("masta").Cells(2, 3) に文字列が入力されていたら? > C_COUNT = Sheets("masta").Cells(2, 3).Text > For i = 1 To C_COUNT 上記2行のいずれかでエラーになりそうです。 数値であることを保証しなければならないのですから、きちんとエラー値 の例外処理をしてやるか、簡単にするなら次のようにしてみると良いと 思います( ・∀・) > C_COUNT = Sheets("masta").Cells(2, 3).Text    ↓ C_COUNT = Val(Sheets("masta").Cells(2, 3).Value)

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >M_KAKOBA(i) = i このコードでは、出来ませんね。変数の宣言が書いていないのではっきりしませんが、そのままではエラーが出ます。 また、他のことですが、 C_COUNT = Sheets("masta").Cells(2, 3).Text ↑ ここのテキストプロパティを入れるのも変です。基本的には、.Value プロパティです。 配列変数宣言を、M_Kakoba() としておいて、 C_Count の数を取ったら、 Redim M_Kakoba(C_Count) に入れます。(ただし、Index の 0 が、Empty になっています。) 変数の定義(Dim)は、きちんと書かないと、いつまでもエラーに悩まされます。 C_COUNT  ←変数は、全部大文字は使わない M_KAKOBA  ←    '' C_Count, M_Kakoba と、キャメル型で表記します。大文字は、Const(定数)で書きます。 また、Option Basis 1 は、今後使わない方向にありますので、それは、随時、対処するしかありませんね。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

>変更したのは… とあるので、このマクロはこれまで動作した実績があるものですか? またマクロの部分だけ掲載していますが変数 M_KAKOBA の定義はどのようになっているのでしょうか? 一般的には ・配列の数よりiの値が大きくなった。 ・Option Baseステートメントがないので「Dim a(10)」ではa(0)~a(9)が使用範囲だがa(10)を指定した などがクサイと思います。  

関連するQ&A