• ベストアンサー

エクセル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/17068)
回答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

  • エクセルのVBAで悩んでいます。

    いつもありがとうございます。 エクセルのVBAで悩んでいます。 セルの範囲指定をVBAで行いたいのです。 ただし、引数に数値変数を使用する為、Cellsプロパティを使います。 すると、離れている範囲の範囲指定が出来ないのです。 例えば、Rangeプロパティだと、 Range("A5:E5,A9:E32").Select こうなるところを、 A9:E32 を変数に置き換えたくて、 Range("A5:E5", Cells(g, 1), Cells(h, 5)).Select と、するとエラーが出ます。 VBAの前文は次の通りです。 Private Sub CommandButton1_Click() a = Me.TextBox1.Value b = Me.TextBox2.Value Set c = Range("a:a").Find(what:=a, LookIn:=xlValues, lookat:=xlWhole) Set d = Range("a:a").Find(what:=b, LookIn:=xlValues, lookat:=xlWhole) 'MsgBox c + d e = c.Address 'MsgBox e f = d.Address 'MsgBox f g = Range(e).Row MsgBox g h = Range(f).Row MsgBox h Range(Cells(g, 1), Cells(h, 5)).Select End sub よろしくお願い致します。

  • エクセルVBAで

    いつもお世話になります。 Range("a1:C5,E5:H10").Select Selection.ClearContents この選択範囲をそれぞれ5列ずつづらしていきたいのですがfor文を使って出来るでしょうか? セルが1つならcells(1,5n)とすればいいのですが,範囲が連続で複数の場合(rangeを使った場合)はどうすればいいのでしょうか。

  • エクセルVBAで

    いつもお世話になります。 使い方がいまいち分かっていないのでご指導願います。 set Y=range("a1:e5") for each X in Y ・・・・ next X で、恐らくa1からa2,a3と順々にe5まで進んでいると思うのですが。 質問(1)これを1個とばしにする事は可能でしょうか? for n=1 to 10 step2みたいな使い方です。 質問(2)B行をまるまるとばしたい時は如何すればいいのでしょうか? 宜しくお願いします。

  • エクセルVBAでできるでしょうか?

    いつもお世話になります。 数列のAnと同じようなことがVBAで可能なのでしょうか? 例 A="A" n=3 An=5 msgbox A3 'これが5になるようにしたい。が ””になる これだとAnが一つの変数とみなされて、上手くいきません。 要はある値が変化するにごとに変数に入れていきたい(保存のようなもの)変数を1個目はA2個目はBということで結びつければできないこともないのですが、数列のようにAnと表現できればと思い質問させて頂きました。 宜しくお願いします。

  • エクセル VBA VLOOKUP

    お世話になります。 VLOOKUPの範囲を変数で取得したいのですが教えて下さい。 下記コードは動きますが、検索範囲の("A1:C4")の『C4』を変数に変更はできますでしょうか。 (データは増える予定ですなので) Range("E1") = Application.WorksheetFunction.VLookup(Range("D1"), Range("A1:C4"), 2, False) 宜しくお願い致します。

  • エクセルVBA

    Sub PlusA001() Dim a As Range Dim b As Integer Range("e1").Value = "氏名" Range("e2").Value = "甲" Range("e2").AutoFill Destination:=Range("e2:e10"), Type:=xlFillDefault Range("f1:j1").Value = Array("国", "数", "理", "社", "英") Set a = Range("f2") For i = 1 To 5 Do Until b = 9 a.Value = Int(100 * Rnd) + 1 b = b + 1 Set a = a.Offset(1, 0) Loop b = 0 Set a = a.Offset(-9, 1) Next i End Sub サンプルコードの例ですが、どうも実行しても納得できない部分があります。それはSet a=a.offset(-9,1)の部分です。Set a = Range("f2")においてf2を始点としているのは判りますが、f2からであればa=a.offset(-9、5) とすればいいのかと思い実行したのですが、ぐちゃぐちゃになります。なぜ(-9、5)ではなく(-9、1)何ですか?いくら読み解いても判りません。教えてください。

  • エクセルVBAに関する二三質問

    いつもお世話になっております。 VBAに関する二三の質問ですが、分かる範囲でお願いします。 1.他モジュールでも使える変数ってありますか? Publicじゃできませんでした。 2.A列のセルが全部「完了」なら、B1に「全部完了」 IF Range("A1").Value = "完了" Or _ Range("A1").Value = "完了" Or _ ・・・・・・ Range("A65536").Value = "完了" Then Range("B1").Value = "全部完了" End if IF Range("A1:B65536").Value = "完了" Then Range("B1").Value = "全部完了" End if じゃできませんでした。 何か方法ありませんか? 3.左上のプロジェクト画面で、 sheet1(職員名簿) sheet2(住所録) とありますよね、sheet1と職員名簿、どっちも通用するのですが、 どっちが本当の名前ですか? sheetを増やしたら、sheet332とどんでもないようなかけ離れたシート名になりますし、 シート現在名を変更したら、他のシートに影響を与えしまうのではと心配です。 お願いします。

  • VBAの関数について

    VBA初心者です。 VLOOKUP関数の使い方がわかりません。 具体的に書かせてもらうと VBAの中にVLOOKUP関数を使いたいです 試験1ファイルのシート"sheet1"にある 検索値を使い 試験2ファイルの指定した検索範囲を 試験1ファイルのシート"sheet1"の指定した位置に数値を挿入することです。 例えばですが(この使い方も間違ってるかもしれません)コードを書いてみると 試験1の検索値はA5セルとします 試験2の検索範囲はB1~C20とします 検索範囲から取得した数値の位置はD5とします VLOOKUPに関してですが 検索値は変数を使い 検索値範囲も変数を使い 列番号はC列がいいので3で 検索方法はFALSEでお願いします sub test() dim a as range dim b as workbooks dim c as range set a = range("B1~C20") set b = workbooks("sheet1") set c = range("A5") workbooks("試験1").worksheets("sheet1").range("D5").value=workbooks("試験2").activesheet."=VLOOKUP(ここがわかりません)".value end sub そもそも変数やsetの使い方が間違ってるかもしれませんm(__)m コードを書いて貰えるととても助かります。 回答お願いします。

  • エクセルVBAについて教えてください。

    エクセル2007を使ったVBAについて2つ質問です。 1つ目の質問は、5列目の右端の数字を2列目の右端に持ってくるため、 Range("B2").End(xlToRight).Next.Select ActiveCell.FormulaR1C1 = Range("A5").End(xlToRight) というVBAを組んだのですが、2列目に空白が入っている場合うまく動かないため動くように したいのですが、どのように組めばいいのかわかりません。 例    A     B     C     D     E     F     G     H     I     J     K 1  2 【数値1】  □    □     □     1     2     3     4     5  3 4 5 【数値2】   6     7     8     9     10 6 ※□は空白 上記の例の場合、5行目の右端である10を2行目の空白を除いた右端である5の隣に持っていきたいです。 2つ目の質問ですが上記例の2列目の両端(1と5)を選択してDeleteする方法がわかりません。 2つの質問についてわかる方おりましたら教えていただけると助かります。 よろしくお願いしします。

  • Excel VBA: セルの参照方法

    Excel VBAで、セルの範囲を指定するときには、 Range("A2:B3") とやりますよね。 ここのとこで、B3セルではなくBxセルにしたいときにはどうすればいいです?。 つまり、xは変数です。 Range("A2:Bx")と書いていいのでしょうか。

有料オプションの解約
このQ&Aのポイント
  • プラスオプションの解約方法と注意点を解説します。
  • ひかりTVのサービスやISPぷららの有料オプションを解約する方法について詳しく説明します。
  • 有料オプションの解約に関する疑問を解消しましょう。プラスオプションの解約手続きや注意点についてご紹介します。
回答を見る