topimg.jpg


間に空白セルがあるときに自動で埋めてくれるマクロ

下図のようなことをしたいときに便利なマクロを作ってみた。

macro1.png


コピペしたい行を選択して、右下角をダブルクリックでも同様のことができるが、数が多いと結構大変である。同マクロを使用すれば、空白セルを直上のセル内容でコピペし、自動で埋めてくれる。なお、最後の行だけは空白のまま処理が終了してしまうので手作業が必要。その点だけは注意。


●サンプルソース(上図のような場合の対応バージョン)

Sub AutoCopyPaste()

Dim SelectionArea As Range
Dim MaxRow As Long

Do
'コピペしたい列の一番左上のセルを指定(下記例ではA1)
Range("A1").Select
'上行で指定したセルから、空白があるセルまでダウンして、そのセルを選択
'※SlectionはRangeオブジェクトを操作するプロパティ。詳細はhttp://www.big.or.jp/~seto/vbaref/vbaref2.htmを参照
Selection.End(xlDown).Select
'上行で指定したセルから、同行かつ右3セルまでを選択(下記例ではA,B,C列の3セルが選択される)
Range(Selection, Selection.Offset(0, 2)).Select
'上行で指定したセルをコピー
Selection.Copy
'上行で指定したセルから、空白があるセルの1つの上の行までを選択
Range(Selection, Selection.End(xlDown).Offset(-1, 0)).Select
'選択している範囲の最大行目の数を変数に代入
'詳細は、http://www.k1simplify.com/vba/tipsleaf/leaf240.htmlを参照
Set SelectionArea = Selection
MaxRow = SelectionArea.Cells(SelectionArea.Count).Row
'65536行目(Excel2003の上限)まで達したらLoopを止める
If MaxRow > 65535 Then Exit Do
'上行で指定したセルにペースト
ActiveSheet.Paste
Loop
End Sub


●参考
2. セル範囲の選択と把握
http://www.big.or.jp/~seto/vbaref/vbaref2.htm
選択されているセルのアドレス・行・列番号 を調べる / 順番にアクセスする
http://www.k1simplify.com/vba/tipsleaf/leaf240.html
スポンサーサイト
  1. 2011/12/26(月) 00:52:55|
  2. MSOffice
  3. | トラックバック:0
  4. | コメント:0
<<データが存在する数だけ同じフォーマットでグラフ作成するマクロ | ホーム | WindowsMovieMakerが不調なときは>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://192168111.blog71.fc2.com/tb.php/73-90f5b938
この記事にトラックバックする(FC2ブログユーザー)