• ベストアンサー

VBA セル範囲をVariant変数に代入

Dim myVar As Variant myVar=Range("A1:A10") などのようにセル範囲を変数に一気に入力して使う際、myVarは2次元配列になる筈です。セル数が1個だけの時は、ひょっとしてただの変数つまり配列にならないのですか?確信ありませんが、そう思えるエラーがありました。 気のせいならこのまま粛々とエラー対策を続けます。本当だったら、データ数で変数の型が変わるので都合が悪いです。どう対策すればいいですか?

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

  • ベストアンサー
  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

セルひとつだと配列を返さないので、配列にしたいなら自分で作る必要があります。 タイトル行などの余計なセルも読み込むことで「必ず範囲になるようにする」という手もありますが、データ数0なんて場合もありますし、そのへんはチェックして処理を変えた方がスマートです。 例)  if Range("A1:A1").count = 1 Then   Redim MyVar(1 to 1, 1 to 1)   MyVar(1, 1) = Range("A1:A1")  Else   MyVar = Range("A1:A1")  End if > 確信ありませんが、そう思えるエラーがありました エディタに「ローカルウィンドウ」という便利な機能があります。メニューの「表示」から有効にしてください。ブレイクポイントやStopなどで実行を止めると、その時点での変数の中身を覗くことができ、デバッグしやすくなる=確信を持てるようになると思います。 VBAの開発効率がいいと言われる理由のひとつです。ステップ実行などと合わせて、ぜひ使ってみてください。 変数にオブジェクトをSetすれば、オブジェクトの「プロパティ」も確認できます。  Set o = Range("A1")  Stop

High_Score
質問者

お礼

ありがとうございます。 少しですが、複雑になりますね。for-nextにしようかと思います。

関連するQ&A