重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel 2003 のVBAで質問です。

以下のサンプルプログラムですが、最後の MsgBox で 1 になってしまいます。
3 が帰ってくるようにするには、Range でどのように指定すればよいのでしょうか。

宜しくお願いします。


〔Sheetの値〕
┌─┬─┬─┬─┐
│*│A│B│C│
├─┼─┼─┼─┤
│1│11│12│13│
├─┼─┼─┼─┤
│2│21│22│23│
├─┼─┼─┼─┤
│3│31│32│33│
├─┼─┼─┼─┤
│4│41│42│43│
├─┼─┼─┼─┤
│5│51│52│53│
└─┴─┴─┴─┘

〔サンプルプログラム〕
Dim myArray1, myArray2 As Variant

myArray1 = ThisWorkbook.ActiveSheet.Range("A1:C5")
myArray2 = ThisWorkbook.ActiveSheet.Range("A1:A5,B1:B5,C1:C5") '指定が間違ってる?

MsgBox UBound(myArray1, 1) '結果 5
MsgBox UBound(myArray1, 2) '結果 3
MsgBox UBound(myArray2, 1) '結果 5
MsgBox UBound(myArray2, 2) '結果 1 → 3になって欲しい

A 回答 (2件)

連続した範囲ではないからでは?


なので A1:A5 ここしか代入されていないから
そうなると思うのですが。。。
    • good
    • 0

Range().Selectしてみると、実際に選択されている範囲が確認できるでしょう。



myArray2 = Union(Range(),Range(),Range()) ではいかがですか?

http://msdn.microsoft.com/ja-jp/library/office/f …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!