• 締切済み

ExcelVBAのRangeで複数指定

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になって欲しい

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

連続した範囲ではないからでは? なので A1:A5 ここしか代入されていないから そうなると思うのですが。。。

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.1

Range().Selectしてみると、実際に選択されている範囲が確認できるでしょう。 myArray2 = Union(Range(),Range(),Range()) ではいかがですか? http://msdn.microsoft.com/ja-jp/library/office/ff838238.aspx