• 締切済み

VBAにて範囲選択およびコピーの方法について

連休中失礼いたします。VBA初心者です。 VBAにて範囲選択の方法およびコピーの方法について教えてください。 (1)範囲選択の方法  まず最初の条件としてD列における値が1.0以上(数値表記は少数点)の場合に限り、 それに該当する行をコピー(A~D列)したいのですが… この方法をVBAの式で表したいのです。  範囲選択として求めたい範囲は、下表で行くとRange(”A3:D6”)の範囲を選択したいのです。  ※D列における値が1.0以上の条件の指定までは、何とかできてそうな感じなのですが、   その条件を満たす、範囲選択がうまくできません。 (2)コピーの方法  (1)で選択した範囲を、選択sheetを変更して貼り付けたいのですがどのようにしたらよろしいでしょうか??       A列     B列     C列      D列 1行    13     10      10      0.5 2行    10     8       7       0 3行    11     9       7       1.0 4行    9      25      18      1.5 5行    8      43      23      1.5 6行    7      12      23      1.0 7行    6      23      43      0.5  8行    15     23      54      0 … …

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

NO1です。 >何回目を選択するかをVBAのプログラムより抜粋して、その範囲を選択したいのですが  ⇒Areasコレクションでオートフィルタの範囲を判別できますが如何でしょうか。   ご例示のデータでは、抽出後のセル範囲オブジェクトを認識できます。   Set b = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Areas   b(1)は、A1:D1(見出し)   b(2)は、A3:D4(1回目)   b(3)は、A6:D8(2回目)   b(4)は、A11:D13(3回目)   b(5)は、A16:D17(4回目)~以下同様      仮に2回目範囲を選択する一例です。   cnt = 3   With Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)   For i = 1 To .Areas.Count   If i = cnt Then    .Areas(i).Select    Exit For   End If   Next   End With

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

オートフィルタで抽出、その結果を反映した方が良いのではないでしょうか。 例えば、見出し行を追加→D列の1以上で抽出→別シートに貼り付けという順です。 Sub sample()  Application.ScreenUpdating = False   With Worksheets("Sheet1")     If .AutoFilterMode Then       .AutoFilterMode = False     End If     .Range("A1").AutoFilter _       Field:=4, Criteria1:=">=1"     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _       Worksheets("Sheet2").Range("A1")     .AutoFilterMode = False   End With  Application.ScreenUpdating = True End Sub

chi-pan-kun
質問者

お礼

ご丁寧にありがとうございます。早速やってみましたが、うまくできました。本当に助かりました。 AutoFilterModeについて調べてみましたが、すごく便利な機能です。今後も参考にさせて頂きます。 先程ご教授頂きました内容をSheet2に張り付けが可能となりましたが、 さらに、Sheet2に張り付けた内容から  D列の1回目の1.5から2回目の1.5が始まる範囲Range("A2:D5")や  D列の2回目の1.5から3回目の1.5が始まる範囲Range("A5:D10")や  D列の3回目の1.5から4回目の1.5が始まる範囲Range("A10:D15")など 範囲選択をして違うsheetに張り付けたいのですが、その選択範囲はそのデータによって異なる ため、こちらで何回目のデータの範囲がほしいかを指定する形をとるか、あらかじめ違うExcelシートに入力されている数字から何回目を選択するかをVBAのプログラムより抜粋して、その範囲を選択したいのですが… いろいろと試行錯誤をしてチャレンジしていますが、なかなかうまくいきません。 もし、何か分かりましたら、またご指導の程お願いします。       A列      B列      C列       D列 1行    11     9       7       1.0 2行    9      25      18      1.5 3行    8      43      23      1.5 4行    7      12      23      1.0 5行    6      23      43      1.5  6行    15     23      54      1.5 7行    23     45      55      1.5 8行    33     44      56      1.0 9行    63     46      71      1.0 10行    88     11      17      1.5 11行    32     77      55      1.5 12行    77     82      32      1.5 13行    77     12      92      1.0 14行    83     56      92      1.0 15行    62     72      65      1.5 16行    33     23      21      1.5