3分で導入!エクセル選択行を最下行にコピペするマクロ

相談者   Excelでデータ入力をしていると、前に入力したデータとほぼ同じデータを入力する場面にちょこちょこ出くわすんですよね。そんな時、前に入力したデータ行をコピーして、最下行にペースト(貼り付け)しているんですが──もちろん手動で──これをマクロで自動化することってできますか?

丸井   もちろんできますよ。

セルを選択して行コピーボタンをクリック
コピーしたい行のセル(空欄以外)を一つ選択して、「行コピー」ボタンをクリックすると……
選択セルの行コピーを最下行にペースト
……選択したセルの行のコピーが、一瞬で最下行にペーストされます!

相談者   私、マクロのこともVBAのことも、まったくわからないんですけど、それでもできますか?

丸井   ええ。Excelの基本操作(初級レベル)ができる人なら誰でも簡単に導入できる方法をお伝えしますので、ご安心ください。

相談者   よかったー。


選択行を一瞬で最下行にコピペするマクロの簡単導入4ステップ


  1. コマンドボタンを設置する
  2. コマンドボタンのプロパティを設定する
  3. コマンドボタンのコードを記述する
  4. デザインモードをオフにする

ステップ1. コマンドボタンを設置する


コマンドボタンを設置
好きな場所・使いやすい場所に、コマンドボタンを設置します。

[開発]タブ

[挿入]

[コマンドボタン(ActiveXコントロール)]

コマンドボタンを設置したい場所でドラッグをして、コマンドボタンを設置


ステップ2. コマンドボタンのプロパティを設定する


プロパティを設定
コマンドボタンの「名称」と「ボタン上に表示する文字」を設定します。

設置したコマンドボタンを選択して右クリック

[プロパティ]

「プロパティ」ウインドウの[全体]タブ

(オブジェクト名)に「行コピー」、
Captionに「行コピー」、
を入力

「プロパティ」ウインドウ右上の[]


ステップ3. コマンドボタンのコードを記述する


コードを記述
コマンドボタンがクリックされた時にどう動作させるのかを、設定します。

設置したコマンドボタンを選択して右クリック

[コードの表示]

(「Microsoft Visual Basic」が起動します。)

「Microsoft Visual Basic」ウインドウの、「Private Sub 行コピー_Click()」と「End Sub」の間に次の文章を入力(コピペ)

If ActiveCell .Value = “” Then
Exit Sub
Else
Dim コピー元 As Range
Set コピー元 = ActiveCell.EntireRow
Dim 貼り付け先 As Range
Set 貼り付け先 = ActiveCell. _
CurrentRegion.Rows.End(xlDown). _
EntireRow.Offset(1)
コピー元.Copy 貼り付け先
End If


ステップ4. デザインモードをオフにする


デザインモードをオフ
デザインモードがオンのままだと、コマンドボタンをクリックできないので、オフにします。

「Microsoft Excel」ウインドウを選択

[開発]タブ

[デザインモード](オフにする)


まとめ


丸井   以上です。ね、簡単でしたでしょ?これで今後はいつでも好きな時に、コピーしたい行のセル(空欄以外)を一つ選択して「行コピー」コマンドボタンをクリックするだけで、その行のコピーが一瞬で最下行にペーストされます。改めて、簡単導入4ステップをお伝えしますと──

  1. コマンドボタンを設置する
  2. コマンドボタンのプロパティを設定する
  3. コマンドボタンのコードを記述する
  4. デザインモードをオフにする

相談者   おぉ、できた!いやーありがとうございました、とっても助かりました。

丸井   こちらこそ、ありがとうございました。

参考文献:『達人が教えるExcel VBAテクニック207』早坂清志著・毎日コミュニケーションズ


追伸


美しいデザインの四書(見積書・納品書・請求書・領収書)をすばやく作成・保存・集計・検索したいですか?

Dmaker:ディーメーカー(無料)をどうぞ >