- ベストアンサー
VBA セル範囲をVariant変数に代入
Dim myVar As Variant myVar=Range("A1:A10") などのようにセル範囲を変数に一気に入力して使う際、myVarは2次元配列になる筈です。セル数が1個だけの時は、ひょっとしてただの変数つまり配列にならないのですか?確信ありませんが、そう思えるエラーがありました。 気のせいならこのまま粛々とエラー対策を続けます。本当だったら、データ数で変数の型が変わるので都合が悪いです。どう対策すればいいですか?
- みんなの回答 (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
お礼
ありがとうございます。 少しですが、複雑になりますね。for-nextにしようかと思います。