実践!ExcelのVBA(マクロ化)で作業を簡略化しよう! ~行の挿入と削除~

見積書や予実績表などの作成やちょっとしたデータベースなど、様々なビジネスシーンで大活躍するソフトがExcelです。Excelには豊富な関数も用意されているので少し勉強するだけで複雑な表も作成できるのが魅力ですよね。
そんな便利なExcelを出来るだけ楽に、便利に使うためにあるのがマクロ機能です。

今回からExcelのマクロ機能を実際のシーン(現金出納帳)を想定して実装してみましょう。初回はとりあえず簡単な処理ですが、行の追加と削除をマクロ化してみます。

行の挿入を実行する

上記、現金出納帳のような表の場合、計算式もセットされていたりするので、行を追加する場合は計算式もコピー&ペーストしないといけなかったりしますよね?

そんな面倒な作業をボタン一発で実行出来るようにしてみましょう。

行挿入&行削除ボタンを配置

行の挿入マクロを作成する

カーソールがあるセルの一つ下に行を挿入し、更に残高欄の計算式をコピー&ペーストするVBAコードを設定しましょう。設定するマクロは以下をご参考下さい。

Sub insert_Click()
    Dim wGyou As Long

    'アクティブなセルの行番号を取得
    wGyou = ActiveCell.Row

    '繰り越し(4行目)より上の行には挿入処理を行わない。
    If wGyou < 4 Then Exit Sub

    '事前にコピーや切取りの操作を取り消す
    Application.CutCopyMode = False

    '行を追加
    Range(wGyou + 1 & ":" & wGyou + 1).Select
    Selection.EntireRow.Insert

    '残高の数式をコピーする
    Range("F" & wGyou).Copy
    Range("F" & wGyou + 1).PasteSpecial Paste:=xlPasteFormulas

    'コピーを取り消す
    Application.CutCopyMode = False

    'セルの位置を移動
    Range("A" & wGyou + 1).Select

End Sub

行の削除を実行する

カーソールがあるセルの行を削除するVBAコードを設定します。設定するマクロは以下をご参考下さい。

Sub delete_Click()
    Dim wGyou As Long
    Dim wLastGyou As Long
    Dim wSheetName As Variant
 
    'アクティブなシート名を取得
    wSheetName = ActiveSheet.Name
 
    'アクティブなセルの行番号を取得
    wGyou = ActiveCell.Row
 
    '最終行番号を取得
    wLastGyou = Worksheets(wSheetName).UsedRange.Rows.Count
 
    '繰り越し(4行)より上の行または合計欄の行削除は実行しない。
    If wGyou <= 4 Or wGyou = wLastGyou Then Exit Sub
 
    '行を削除する
    Range(wGyou & ":" & wGyou).Delete

 End Sub

関連エントリー

以上、今回はExcel実践マクロ、行の挿入と削除でした。尚、サンプルファイルは後ほどまとめてアップさせて頂きますので少々お待ちくださいね。