北の窓から(芦田っち)

PC関連と私的雑感のブログ。
2015年7月10日、カッコ内に名前を加えました。昔の友だちに気付いてほしくて・・・

Excel (VBA) : 行・列が挿入・削除されたことを検知する

2019-11-22 17:13:12 | おやぢチップス
MSDN forum で質問が上がっていたので、 のでサンプルを作ってみました。

Excel シート上で、行や列が挿入(or 削除)されたことを検知するマクロです。

まずは動きをご覧ください。
  

  # 質問が英文だったので、Excel の表示言語とメッセージを英語にしています。
    OneDrive で共有したファイルでは日本語のメッセージにしました。

行・列の挿入・削除を検知する前提として、検知範囲(行と列)を指定しておきます。

  # 動画の黄色部分(行:1-10、列:A-J)が検知範囲です。
    この範囲内で行・列の挿入・削除が発生すれば、それを知らせるしくみです。

検知範囲の指定は、Excel ブックが開いたときのプロシージャで行っています。

(ThisWorkbook 内)
' ----------------------------------------------
Private Sub Workbook_Open()
  With Sheets("Sheet1")
    Set .RowRange = .Range("1:10")
    Set .ColRange = .Range("A:J")
    ' ---
    .RowCnt = .RowRange.Rows.Count
    .ColCnt = .ColRange.Columns.Count
  End With
End Sub
' ----------------------------------------------

シート内では次のコードを書きます。

(Sheet1 内)
' ----------------------------------------------
' --- for Row
Public RowRange As Range
Public RowCnt As Long
' --- for Column
Public ColRange As Range
Public ColCnt As Long

' --- check if Rows or Columns are deleted (added)
Private Sub Worksheet_Change(ByVal Target As Range)
' --- check Row count
  If (RowRange.Rows.Count < RowCnt) Then
    MsgBox RowCnt - RowRange.Rows.Count & " 行が削除されました"
    RowCnt = RowRange.Rows.Count
  End If
  If (RowRange.Rows.Count > RowCnt) Then
    MsgBox RowRange.Rows.Count - RowCnt & " 行が挿入されました"
    RowCnt = RowRange.Rows.Count
  End If
  ' --- check Columns count
  If (ColRange.Columns.Count < ColCnt) Then
    MsgBox ColCnt - ColRange.Columns.Count & " 列が削除されました"
    ColCnt = ColRange.Columns.Count
  End If
  If (ColRange.Columns.Count > ColCnt) Then
    MsgBox ColRange.Columns.Count - ColCnt & " 列が挿入されました"
    ColCnt = ColRange.Columns.Count
  End If
End Sub
' ----------------------------------------------

 # 上のコードではインデント(見やすさ)のために全角スペースを先頭に付与しています。
   実際のコードは全角スペースではなく、 [TAB] です。

なお、このファイル(マクロ付き Excel ファイル)を OneDrive で共有しました。
ご興味のある方は、ダウンロードしてお試しください。
Track_Insert-Delete.xlsm


---------------------------------------------------------
ブログ記事についてのお問い合わせは「質疑応答 掲示板」で・・・

  # ご質問にはできる限りお答えしています。
    ただし、お名前(本名の姓 and/or 名)を書いていただいた場合に限らせていただきます。


ここをクリックして、北窓舎のサイトにもお立ち寄りください・・・

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 1909 って、毎月の更新プログ... | トップ | アニメ GIF 作成ソフト: Scr... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

おやぢチップス」カテゴリの最新記事