• ベストアンサー

エクセル マクロでのセル選択について

ワークシート上で、ある決められてセル範囲をコピーしたいのですが、コピー元の範囲とコピー先が規則的に変わるので、セル自体を変数として for-netのようなプログラムで実行させたく思っています range("E1:E3") のE1とE3を変数として扱う方法はありますか? 実際のプログラムにイメージは・・・・ E1:E3 を O3:Q3 にコピー F1:F3 を R3:T3 にコピー 次は E11:E13 を O4:Q4 にコピー F11:E13  を R4:T4 にコピー とこんな感じです

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

Rangeの指定方法はいろいろあります。 例えば、以下の方法はみなRange("E3:G5")を指定する場合(セレクトさせてます)を示しています。 a、b、row1、column1、row2、column2、n、mなどは変数です。(a、bは文字変数、他は数値(整数)変数) <方法1>がご質問の通りにa、bの文字変数による指定の場合です。 範囲の変化の規則がわかりませんが、対象範囲を計算などで求めるようなケースでは数値変数の方が扱いやすいので、<方法2>や<方法3>などが便利かと思います。 <方法1>(A1方式で文字で指定) a = "E2"   '*左上 b = "G5"   '*右下 Range(a & ":" & b).Select <方法2>(R1C1方式での指定:左上と右下隅) row1 = 2   '*左上(行番号) column1 = 5  '*左上(列番号) row2 = 5   '*右下(行番号) column2 = 7  '*右下(列番号) Range(Cells(row1, column1), Cells(row2, column2)).Select <方法3>(左上と幅、高さで指定) row1 = 2   '*左上(行番号) column1 = 5  '*左上(列番号) n = 4     '*行数(高さ) m = 3     '*列数(幅) Cells(row1, column1).Resize(n, m).Select

その他の回答 (2)

  • pam_sarai
  • ベストアンサー率36% (4/11)
回答No.3

セル指定方法を3通りほど。 適当に変形して使ってください。 Range("E" & 1 & ":E" & 3).Copy Range(Cells(1, 5), Cells(3, 5)).Copy Range(Cells(1, "E"), Cells(3, "E")).Copy

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

がんばってみました >range("E1:E3") のE1とE3を変数として扱う方法はありますか? >E1:E3 を O3:Q3 にコピー は Cells(3 , 15).Value = Cells(1 , 5).Value Cells(3 , 17).Value = Cells(3 , 5).Value でいけるのでは。 Sub Macro1() Dim i As Integer For i = 0 To 1 Cells(3 + i, 15).Value = Cells(1 + i * 10, 5).Value Cells(3 + i, 17).Value = Cells(3 + i * 10, 5).Value Cells(3 + i, 18).Value = Cells(1 + i * 10, 6).Value Cells(3 + i, 20).Value = Cells(3 + i * 10, 6).Value Next End Sub

関連するQ&A

専門家に質問してみよう