• ベストアンサー

オートフィルをVBAで実行したいのです。

オートフィルをVBAで実行したいのです。 表(例:B2:E○)があります。○は毎回数字が変化します。 (商品仕入があれば”行”が増え、売上れば減るため) その表のA列に、A2から列方向に1から連番の数値をオートフィルで最終行まで数値を入れたいのですが、コードを教えていただけませんでしょうか? 宜しくお願いします。

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

  • ベストアンサー
回答No.1

こんにちは。 >A2から列方向に1から連番の数値を A2、A3、A4 … と連番を入れていくんですよね? でしたら、それは 「列方向」 ではなく 「行方向」 です。 いずれにしても、そういうことでしたら わざわざ VBAを使わなくても関数でできますよ。 A2 に↓ ---------------------- =IF(B2="","",ROW()-1) ---------------------- と入れて、これ以上はデータは増えないだろうという行まで オートフィルで数式をコピーしてください。 B列にデータが入っている行のみ、A列に連番が入ります。 途中の行を削除しても連番が飛ぶことはありません。 行を削除したり、追加した時点で、 瞬時に(!)連番が振り直されます。 ぜひお試しください。 どうしても VBAでやりたい、ということであれば ↓な感じでしょうか? (該当するシートのコードウィンドウに貼り付けてください) ------------------------------------------ Sub test()   Dim i As Long   Dim myLastRow As Long   'B列の最終行を取得   myLastRow = Range("B65536").End(xlUp).Row   If myLastRow > 1 Then     For i = 2 To myLastRow       Cells(i, "A").Value = i - 1     Next i   End If End Sub ------------------------------------------

abouka
質問者

お礼

AloneAgain 様 早速のご回答ありがとうございました。 1).反省   > A2、A3、A4 … と連番を入れていくんですよね?     そうです。それを「行方向」と呼ぶとは、全く     知らずに失礼しました。今後はもう、間違えません。 2).VBAを使わなくても関数でできますよ。     驚きました。大変スマートな方法で、ここに質問したりすること事態、恥ずかしいことだったかもしれませんが、私はその便利さを実感して目がパチクリしました。 2).VBAで行うコード    期待どおりに動きました。コードの意味は理解できました。自作の在庫管理マクロは、2)のやり方でOKとします。 時間を割いていただき、ありがとうございました。 感謝、感謝です。

関連するQ&A