• ベストアンサー

アクティブセル以下をコピーするマクロの設定の仕方が分かりません。Excel2000です。

アクティブセル以下をコピーするマクロの設定の仕方が分かりません。Excel2000です。 B列(B3:B402)のどのセルをアクティブにした場合でも、"アクティブセルをそれ以下のセル全て(B402まで)に オートフィルでコピーする"マクロを設定したいのですが、 自動記録だとアクティブセルはセル番号で記載されてしまうため、応用が利きません(というか分かりません)いずれかのセルをアクティブにし、コマンドボタンを押すと それ以下のセルにコピーされるという流れです。 私なりに調べてみましたが分かりません。 どなたかご教示願えませんでしょうか?

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

質問の方法(フィルハンドルをドラッグする方法)に拘ると以下のようになります。 作成した記録マクロをちょこっと修正するだけです。 '------------------------------- Sub Test()  ActiveCell.AutoFill Destination:=Range(ActiveCell, "B402"), Type:=xlFillDefault End Sub '------------------------------- 当然ながらこれは普通のコピーと同じく、【式】、値、セルの書式もコピーされます。 値だけであれば、NO2さんの回答か、Copyメソッドで値のみのコピーをマクロ記録してみる。 以上。

miyabi08
質問者

お礼

onlyromさん、ありがとうございます。 お礼が遅くなって申し訳ありません。 onlyromさんの回答で思うような動きができました。 ありがとうございました!

その他の回答 (3)

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

こんにちは。 >オートフィルでコピーする"マクロを設定したいのですが、 オートフィルということは、例えば、インクリメンタルな数や文字の順を使うという意味なのでしょうか?オートフィルを使うなら、Test2 のようになります。必要に応じて、AutoFill のXlAutoFillTypeの引数を入れてください。何も入れなければ、デフォルトです。 '------------------------- Sub Test1() With ActiveCell If .Row > 2 And .Row < 403 And .Column = 2 Then .Copy Range(.Cells, Range("B402")) End If End With End Sub '------------------------- Sub Test2() With ActiveCell If .Row > 2 And .Row < 403 And .Column = 2 Then .AutoFill Range(.Cells, Range("B402")) End If End With End Sub

miyabi08
質問者

お礼

Wendy02さん、お礼が遅くなりました。申し訳ありません。 色々と参考にさせていただきます。 ありがとうございました。

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

多分、ご希望は以下のことかと思いますが。 Range(ActiveCell, Range("B402")).Value = ActiveCell.Value 応用を考えて、アクティブなセルの行番号、列番号取得して 複数のセルの範囲を指定する方法と値を代入する方法です。 仮に、E1に、値を入れたい行の数が入っていたとして。 GYOU = ActiveCell.Row RETU = ActiveCell.Column AIDA = Range("E1").Value Range(Cells(GYOU, RETU), Cells(GYOU + AIDA, RETU)).Value = ActiveCell.Value 意味理解して応用考えてみてください。

miyabi08
質問者

お礼

hallo-2007さん、お礼が遅くなって申し訳ありません。 とりあえず、すごく急いでいたので下記のようなマクロにしました。 書式はあまり関係なかったので、オートフィルでなくてももんだいなかったです。 本当は、“アクティブセルのひとつ下のセル”から“B402”までにペーストしたかったのですが、分かりませんでした。 応用も試してみます!ありがとうございました。 ActiveCell.Copy Range(ActiveCell, Range("B402")).PasteSpecial

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Range(ActiveCell, Range("B402")).Copy

miyabi08
質問者

お礼

hana-hana3さん、ありがとうございます。 参考にさせていただきます。

miyabi08
質問者

補足

ANo.1さん、早速のご回答ありがとうございます。 私の質問の仕方が分かりづらかったのですが、 アクティブセルをコピーして、 アクティブセルの一つ下のセルからB402の範囲にペーストしたいのです。 以上、よろしくお願いします。

専門家に質問してみよう