• ベストアンサー

ExcelVBAで変数を用いた範囲指定について

お世話になります。 ExcelVBAで困っていますので、アドバイスをお願いします。 A5:A10とD5:D10までといったように離れたセルへ Rangeを用いて範囲指定を行いたいのですが、 その際、行を示す数字に変数を用いたいと考えています。 この場合、どういう指定をしたら宜しいでしょうか? またRangeではなく他の方法もありましたら、 是非、ご提案願います。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

変数で範囲を指定する場合は、Cellsを使用します。 Cells(5, 1).Slectは Range("A5).Slectと同じ、 範囲を指定する場合は、 Range(Cells(5, 1), Cells(10, 1)) 離れたセルを指定する場合は Union(Range(Cells(5, 1), Cells(10, 1)), Range(Cells(1, 5), Cells(10, 5))).Select

naka5322
質問者

お礼

ご返答ありがとうございます。 Unionで目的が達成できました!!

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 直接の回答ではないけれども、テクニックだけの質問というのは、回答者にとって厳しいなって思います。単発のテクニックで聞かれたら、それはキリがないからです。 >A5:A10とD5:D10までといったように離れたセルへRangeを用いて範囲指定を行いたいのですが、 離れたセルに範囲指定する、という論理が成り立つか成り立たないか、私には分からないです。離れた範囲なら、一般的にはUnion ということですが、Union は、オブジェクトを複数に確保し、一括編集など、画面の変化に左右されないで行ったりする場合であって、通常なら、別々に処理してもかまわないのです。その時間差というのは、長くても0.005秒程度の間だと思います。 もちろん、こんな書き方も成立はしますが、通常はありえません。 i = 5 j = 10 Range("A" & i & ":A" & j & ",D" & i & ":D" & j).Select なるべく全体的な内容をお聞かせください。このレベルをお聞きになるというのは、全体のコードがうまく成り立っていない可能性もあるのです。

naka5322
質問者

お礼

ご返事ありがとうございます。 色々悩んでいたのですが、":A"の発想ができず行き詰っていました。 ご返答頂いた内容で目的が達成できました。 >単発のテクニックで聞かれたら、それはキリがないからです。 の件もおっしゃる通りです。 今回は私の勉強不足により疑問点が解決できず 質問させて頂きました。もう少し頑張って勉強します。 ありがとうございました。

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

普通は(下記どちらか1行) Sub test01() Range(Cells(1, "A"), Cells(10, "A")).Select Range(Cells(1, "D"), Cells(10, "D")).Select End Sub ですが Sub test02() i = 1: j = 10 Range("A" & i & ":A" & j).Select End Sub というのもある。 Sub test03() Application.Goto ActiveWorkbook.Sheets("Sheet1").Range("D3:E11") End Sub というのもある。

naka5322
質問者

お礼

ご返答ありがとうございます。 目的が達成できました!!

  • s_saike
  • ベストアンサー率46% (36/77)
回答No.2

Range(Cells(5,1),Cells(10,1)) のことでしょうか。

naka5322
質問者

お礼

ご返答ありがとうございます。

関連するQ&A

  • ExcelVBAでセルの番地を変数として扱いたいですが

    ExcelVBAでセルの番地を変数として扱いたいですが 例えばaという変数に『Range(Cells(2, 5), Cells(2, 8))』を入れたとします。 このセル番地は複数を指定していると思うのですが、 このセル番地すべてを一個下にずらす、つまりCells(1,0)をプラスしたいんですが、 どうしたら良いのでしょうか? a + Cells(1,0)ではダメでした。

  • ExcelVBA 変数を使った別シートセルのCellsでの範囲指定について

    ExcelVBAで変数を使って別シートのセルをCellsで範囲指定をすると、 「アプリケーション定義またはオブジェクト定義のエラーです。」と 表示されます。 Sheets("Sheet1").Range(Cells(1, CNT), Cells(10, CNT)).Value 同シート内ならエラーは出ないのですが、処理中にアクティブシートを 変えたくありません。 何かよい方法はないでしょうか。

  • EXCEL 変数を使ったセルの範囲指定

    EXCEL2003です。 セルの番地を変数aaaとbbbにそれぞれいれています。 (例:aaaは"A1"のセル、bbbは"A4"のセル) 範囲を指定する(Range("A1:A4")のように)のに、 変数でする場合は、どのような記述にすればよいのでしょうか。 よろしくお願いします。

  • ExcelVBAで範囲指定

    セル範囲、D3:E15とG3:G15とI3:I15をクリアする場合 Sub Macro2() Range("D3:E15,G3:G15,I3:I15").ClearContents End Sub と書くと思います。 この15行目を変数にする場合 Sub Macro3() Dim x As Long x = 15 Range("D3:E" & x & ",G3:G" & x & ",I3:I" & x).ClearContents End Sub と書く以外にもっと簡単な範囲指定の方法はないでしょうか?

  • エクセルの範囲セルの範囲セルについて

    ExcelVBAで、ある範囲のセルを基準として、その範囲の中の範囲を表したい のですが、どうすればよいのでしょうか? 以下のセルで、A1:D2の範囲を使ってA2からD2の範囲を表す方法です。 A1 B1 C1 D1 A2 B2 C2 D2 A2のセルはRange("A1:D2").Cells(2,1)で表すように Range("A2:D2")でなく、Range("A1:D2")を使ってA2からD2の範囲を表す方法が知りたいです。

  • Excelマクロ:変数でセル範囲指定

    マクロの迷い人です。 Excelの表をマクロで印刷しようと思っています。 行の数が毎回違うため、最終セルもその都度指定しなければなりません。 A1 B1 A2 B2 A3 B3 A4 B4 この例で、A5 B5 以降は空セルとします。 印刷範囲を Range("A1:B4")と書かずに、そのときどきのアクティブセルを変数に代入し、変数を使って範囲指定したいのです。 Sub MacroTest () Dim a As Variant Dim b As Variant Range("B1").Activate Do While a <> 0 ActiveCell.Offset(1, 0).Activate '空白でなければ一つ下に移る a = ActiveCell.Value Loop ActiveCell.Offset(-1, 0).Activate '上の行に移る b = ActiveCell.Value Range("A1:"& b).Select End Sub こうしてみましたがダメでした。 デバッグの方法がわからないので教えて下さい。よろしくお願いします。

  • ExcelVBA 挿入貼り付けについて

    ExcelVBA勉強中の者です 変数にA1セルを指定し、別のセルへA1の値を挿入したいのですが上手くいきません。 Dim A1Cell As Range Set A1Cell = Range("A1") ↑Msgbox(A1Cell)にてA1セルの値を出力したので変数の宣言は出来ていると思います。     ActiveCell.Resize(1, 5).Select    Selection.Copy Range(A1Cell).Selection.Insert Shift:=xlDown         ↑ここでの変数の指定が間違っていると思われます Application.CutCopyMode = False かなり調べたつもりですが、自力では解決できずどなたか御助力お願い致します。

  • (変数)を使った特定の範囲の選択について

    下記のように、行を変数として、グラフの元になるデータの範囲(A列とC列)を指定した行までとしたいのですが、なかなかうまくいきません・・・("A1:セル番号,C1:セル番号1")の行ところでエラーになってしまいます。 どなたかよい方法を教えていただけませんでしょうか?お願いします。 Dim 行 As Integer Dim セル番号 As Variant Dim セル番号1 As Variant 行 = 7 セル番号 = "A" & 行 セル番号1 = "C" & 行 ActiveSheet.ChartObjects("グラフ11").Activate ActiveChart.ChartArea.Select ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:セル番号,C1:セル番号1"), _ PlotBy:=xlColumns ActiveWindow.Visible = False Windows("マクロ練習売上と見み.xls").Activate Range("A1").Select

  • excelvbaについてご教授ください。

    いつもお世話になっております。 excelvbaの変数設定について、早速質問です。 A1を選択中だとして、 変数1 = Cells(Selection.Row, 1).Value は、(現在選択中の行,1列目)のセルデータを変数1に代入している。 変数2 = Cells(Selection.Row, 4).Value は、(現在選択中の行,4列目)のセルデータを変数2に代入している。 ということでそれぞれ間違いないでしょうか? 上記が正しいとして、 変数3 = Range("A11:A24 ").Find(What:=変数1, LookAt:=xlPart).Cells(変数2, 1).Row は、A11:A24から、変数1に該当するセルの行を変数3に代入しているということでしょうか? 特に、Cells(変数2, 1)の部分がよくわからないのですが、これ単体で見るとA4ですが、追加してもしなくても、結局変数3は変数1に該当する行なので、追加する必要があるのでしょうか? 的を得ていない質問をしていましたら申し訳ございません。

  • ExcelVBA コピー範囲を変数にしたい

    いつもお世話になっております。 またVBAでお知恵をください。 SHEET1のある範囲(フラグがたっている)をSHEET2にコピーしたいのですが フラグが存在しない場合もあるために悩んでいます。 途中まで自分でやってみたのですがエラーになりました。 Dim AA As Range For Each AA In Range("F4:AL4") ←ここの範囲にフラグがあります AA.Select With ActiveCell If .Value = "1A" Then Selection.Offset(7, 0).Select Range(Selection, Selection.End(xlDown)).Select Selection.copy Sheets("SHEET2").Select Range("F15").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("sheet1").Select End With Next AA フラグ列を探し、1Aがあったらその7つ下のセルからラストのセルまでの 値をSHEET2のF15にコピーしたいのです。 フラグは1A、1B、2A、2Bと変化し、 貼り付け場所はそれに応じて1A→F15、1B→G15、2A→I15 となります。(貼り付け先は固定) ただし、フラグが存在しない場合もあり、その場合はSKIPです。 (1BがなければG15には何も貼り付けない) フラグは10Bまで合計20個あるため、できれば変数にしたいのですが どのように記述すればいいのかわかりません。 貼り付け先はF、G、I、J、L、M、O、P、と変化します。 (AとBでセットで間に1列あきます。が、Aだけの場合もある) これも変数にすればよいのでしょうが、15行目、というのを 記述する方法と、存在しない場合に詰めてしまわないようにする 方法がわかりません。。。。 お知恵を貸してください。 よろしくお願いいたします。

専門家に質問してみよう