- ベストアンサー
エクセルVBAで
いつもお世話になります。 変数で set a=range("a1:B10") という使いかたしますよね。そこで質問なんですが、複数個の範囲を変数に放り込みたい時は如何すればいいのでしょうか? 例 set a=range("a1:B10")、range("g7:h13")、・・・ みたいな感じです。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Dim a As Excel.Range set a = Range("a1:B10,g7:h13") で、OKですよ。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
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をセットするのはほとんど必要を感じたことはなく、使いこなせていませんが。
お礼
imogasiさん、度々有難うございます。 Array関数を使ったやり方は、応用が利きそうなので、覚えておきます。 いつも解かり易いコードを作って頂き、大変参考になります。 有難うございました。また宜しくお願いします。m(_ _)m
' 必要分だけ変数を配列でもってそこに代入していきます。 Dim a(1) Set a(0)=Range("a1:B10") Set a(1)=Range("g7:h13") ' って感じでしょうか?
お礼
回答有難うございます。 set a = Range("a1:B10,g7:h13")でいけるみたいです。 有難うございました。
お礼
回答有難うございます。 こげに簡単なもんで良かったとは!!目からうろこです。 有難うございました。