• ベストアンサー

エクセルVBAで

いつもお世話になります。 変数で set a=range("a1:B10") という使いかたしますよね。そこで質問なんですが、複数個の範囲を変数に放り込みたい時は如何すればいいのでしょうか? 例 set a=range("a1:B10")、range("g7:h13")、・・・ みたいな感じです。 宜しくお願いします。

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

  • ベストアンサー
  • Silent-G
  • ベストアンサー率15% (2/13)
回答No.3

Dim a As Excel.Range set a = Range("a1:B10,g7:h13") で、OKですよ。

keiri2002
質問者

お礼

回答有難うございます。 こげに簡単なもんで良かったとは!!目からうろこです。 有難うございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Sheet1のA1:C3に値 1 12 13 2 1 2 3 を入れて下記を標準モジュールに作り実行して結果は正しかったので、ご参考にしてください。 コメントの「’」を外して、MSGBOXの1つを残して実行 して見てください。 Sub test01() ' Dim a(10) As Range Dim a As Range Worksheets("sheet1").Activate b = Array(Range("a1:a3"), Range("b1:b2"), Range("c1:c2")) For i = 0 To 2 Set a = b(i) 'MsgBox WorksheetFunction.Sum(a) ' MsgBox a.Cells(1, 1) MsgBox WorksheetFunction.Sum(b(i)) Next End Sub 私は初級的な使い手なので、オブジェクト変数にRangeをセットするのはほとんど必要を感じたことはなく、使いこなせていませんが。

keiri2002
質問者

お礼

imogasiさん、度々有難うございます。 Array関数を使ったやり方は、応用が利きそうなので、覚えておきます。 いつも解かり易いコードを作って頂き、大変参考になります。 有難うございました。また宜しくお願いします。m(_ _)m

noname#27115
noname#27115
回答No.1

' 必要分だけ変数を配列でもってそこに代入していきます。 Dim a(1) Set a(0)=Range("a1:B10") Set a(1)=Range("g7:h13") ' って感じでしょうか?

keiri2002
質問者

お礼

回答有難うございます。 set a = Range("a1:B10,g7:h13")でいけるみたいです。 有難うございました。

関連するQ&A