• ベストアンサー

マクロでセルのセレクト範囲を変更する方法

マクロの記録を使って、部分的に編集して使っています。 以前BASICをやっていたので、若干理解できる部分があります。 教えていただきたいのは、例えば Range("A1").SelectのA列1行目の行の部分を for i =1 to 10 として、1行目から10行目までを順次セレクトする方法を教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • moon00
  • ベストアンサー率44% (315/712)
回答No.1

選択するのに、Rangeプロパティではなくて、Cellsプロパティを使います。 Range("A1").SelectはCells(1,1).Selectと書き換えることができます。 Cells(行番号, 列番号)という書き方になるので、行をiで置き換えると Cells(i,1).Select となります。 これをForの中に入れて、iを変化させれば順次選択することができます。

uechan1946
質問者

お礼

moon00 様 回答ありがとうございます。判りやすい内容でたすかります。

その他の回答 (2)

  • weboner
  • ベストアンサー率45% (111/244)
回答No.3

For Each~Nextステートメントを利用することも出来ます 例: Sub Macro1() Dim ts As Range For Each ts In Range("A1:A10") ’ココに処理 ’処理例: ts = i i = i + 1 Next End Sub 実行するとA1セルからA10セルまで順に処理が実行されます 範囲指定をRange("A1:B10")と指定した場合は A1⇒B1⇒A2⇒B2⇒・・・・⇒A10⇒B10 と処理が実行されていきます for~nextでセル番地を指定したループよりも感覚的に分かりやすいかと

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

現在のコードを生かすならセル番地の部分を以下のように変更します。 Range("A" & i).Select

関連するQ&A

  • マクロの編集方法を教えて下さい。

    自分で記録したマクロを親切な方に編集してもらいました。実行スピードが格段に速くなったのですが、さらに処理したい項目が出来たので、別に記録してコピー、適切な箇所に挿入したのですが、実行時エラーが出ます。どう直していいのか分かりません。分かる方教えて下さい。 Sub Incert12() Dim wRow As Long Dim i As Integer Dim tbl(1 To 12, 1 To 1) As Integer wRow = Range("A65536").End(xlUp).Row Rows(CStr(wRow) & ":" & CStr(wRow + 11)).Insert Range(Cells(wRow + 1, "B"), Cells(wRow + 11, "B")).FormulaR1C1 = "=R[-1]C" '↑(1)これの代わりにB列を12行全て結合したい For i = 1 To 12 tbl(i, 1) = i Next i Range(Cells(wRow, "C"), Cells(wRow + 11, "C")).Value = tbl '↑(2)これに加えてA列に以下の処理も加えたい 'ActiveCell.Offset(-2, -8).Range("A1").Select 'ActiveCell.FormulaR1C1 = "=R[-1]C+1" 'ActiveCell.Select 'Selection.AutoFill Destination:=ActiveCell.Range("A1:A12"), Type:= _ ' xlFillDefault 'ActiveCell.Range("A1:A12").Select '↓(3)F列ではなく、FからK列までにしたい。 Cells(wRow + 12, "F").AutoFill Range(Cells(wRow, "F"), Cells(wRow + 12, "F")) 'これが私が作ったマクロ。(2行目に問題ありとの事) 'ActiveCell.Offset(-1, 5).Range("A1:F1").Select 'Selection.AutoFill Destination:=ActiveCell.Range("A1:F13"), Type:= _ ’ xlFillDefault 'ActiveCell.Range("A1:F13").Select Cells(wRow, 1).Select End Sub 以上(1)~(3)を直したいのです。どなたかよろしくお願い致します。

  • エクセルマクロ セルの貼り付けについて

    マクロ初心者でわからないことばかりで困っております。 For i = 1 To 721 Step 80 Sheets("Sheet2").Activate Range("G3").Select ActiveCell.FormulaR1C1 = i Range("A1:D80").Select   Selection.Copy Sheets("Sheet3").Activate このあとにコピーしたもの「Range("A1:D80").Select」をセルに貼り付ける時に一回ごとに80行ずつずらして貼り付けたいのですが、そのような場合は どのようにRange指定して貼り付ければよろしいのですか? sheet2で演算した結果をsheet3のセルA1からA721まで貼り付けたいのです。一回の演算で80行まで計算されます。 わかりずらくて申し訳ありません。

  • Excel マクロ 最終セルが毎回違う場合

    マクロ初心者です。 自動記録でマクロを作りました。 最終行が毎回違うので、「コピー(オートフィル)をA列の最終行にあわせてする」と作りたいです。 自動記録ではJ71までコピーになっていますが、J71をA列の最終行にしたいです。 よろしくお願いします。 Range("G3:J3").Select Selection.AutoFill Destination:=Range("G3:J71"), Type:=xlFillDefault Range("G3:J71").Select

  • マクロ 可視セルへコピーする方法

    こんにちは。よろしくお願いします。 A~V列、300~400行程度の表を作っています。 8行目をコピーして空白行へペーストしたいのですがどのようにすれば良いでしょうか。 マクロの記録でつくったものは ActiveSheet.Paste でエラーになります。 またペースト開始行をA17ではなくて可変なものに変えたいです。 よろしくお願いします。 Sub 下までコピー() Range("A8:V8").Select Selection.Copy Selection.AutoFilter Field:=2, Criteria1:="=" Range("A17:V" & Range("B5").End(xlDown).Row).Select Selection.SpecialCells(xlCellTypeVisible).Select ActiveSheet.Paste Application.CutCopyMode = False Selection.AutoFilter Field:=2 End Sub

  • VBAとマクロ

    お世話になります。田吾作7です。 ふと思ったのですが。。。 VBAとマクロの違いって何でしょう? 「マクロの記録」ボタンを押したのがマクロですか? VBAは、MS-Officeのモジュールにユーザ自身が書き込んだら、それはVBAですか? もしそうなら、[マクロの記録]ボタンはなぜ[VisualBasicツールバー]にボタンがあるのでしょうか。マクロを編集しやすくするためでしょうか? 記録で Range("A1").select それを編集で Range("A2").select としたらVBA? さらに最初っから Range("A2").select と記録したマクロは、やっぱりマクロ? VBAとマクロって違いあるのでしょうか? いつも疑問に感じて、モヤモヤしてます。 だれか、このモヤモヤ感を解消してください。 よろしくお願いします。 余談ですが・・・ VBAは[VB for Application]ですよね? Office関連のためのVBってことですよね。 でもAPIを使ってWINDOWSを制御することもできるから[for App]の意味が無いような気がする今日この頃・・・

  • 指定するセルのRange書き込み変更

    Sub 移動と削除() Range("A1").Select Selection.Cut Destination:=Range("E1") Range("A1").Select Selection.Delete Shift:=xlUp End Sub 自動マクロで作った上記の記録があります。これをA1固定ではなくA列の指定するセルにし E1もA列で指定したセルと同じ行のE列にしたいのですが書き換える方法をおしえてください。

  • マクロで塗りつぶしセルのカウント

    マクロ初心者です。アドバイスをお願いします。以下のマクロですとB列の100行目までの塗りつぶしのセルのカウントは出来るのですが、シート上の全てをカウントしたいのです。1TO 100の100の部分をどう変更したら良いのか教えてください。 Sub セルの色数1() Dim I As Integer Dim Count As Integer Count = 0 For I = 1 To 100 If Cells(I, 2).Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub

  • excel2007マクロに関しまして

    excel2007マクロに関して不明な点があるので教えて頂きたいです。 シートが50枚ありそれぞれのシートのN列4~15行に対し そのシートのC列4~15行の値を60倍したものを記載したいのですが 下記入力内容中の Range("N " & j ).Select のところでRange メソッドの失敗が生じてしまいます。 その他にも不備があればご指摘頂きたいです。 宜しくお願いします。 Sub Macro6() ' ' Macro6 Macro ' Dim i, j As Integer For i = 1 To 50 With Sheets("ds1_" & i) Range("N3").Select ActiveCell.FormulaR1C1 = "Q(cum/m)" For j = 4 To 15 Range("N " & j ).Select ActiveCell.FormulaR1C1 = "=RC[-11]*60" Next j End With Next i End Sub

  • マクロについて教えてください

    マクロ初心者です。 A~D列の表が少ない時100行、多い時400行あり、同じ操作を何回か繰り返すため、できればマクロで処理したいと思っています。 マクロ記録で作成したのですが、最終行が一定ではないため行数が増えると上手く作動しません。 どこを修正したらいいでしょうか。ご教示いただければ幸いです。 Sub Macro1() ' ' Macro1 Macro ' ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""集計"","""")" Range("G2").Select Selection.AutoFill Destination:=Range("G2:G4"), Type:=xlFillDefault Range("G2:G4").Select Range("H2").Select ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R13C1,RC[-1],R2C2:R13C2)" Range("H2").Select Selection.AutoFill Destination:=Range("H2:H4"), Type:=xlFillDefault Range("H2:H4").Select Range("H5").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" Range("H6").Select End Sub ちなみに作成したいマクロ 1.F列にA列の「集計」を取り出して、G列にF列の「集計」文字を取り除く。 2.H列にB列「数」を計算する 3.H列の最終行に合計を出す。

  • エクセルで範囲指定の方法

    指定する列の範囲はAから始まり、X~Z位までです。行は決まっています。先ず次の文で列の範囲を取得します。 Range("A1").CurrentRegion.Select I = .Selection.Columns.Count 例えば5行目のI列を指定する時はどうすれば良いでしょうか。 Range("A5:" & I & "5").Select では、エラーになります。

専門家に質問してみよう