行や列を削除したときにイベントを取得したいと思っています。一応調べましたが、そのようなイベントはどうやらないようなのですが。。。
やりたいことは、ある行(例:F)が削除されたときに、その行にあった内容を配列か何かに入れておきたいのです。イベントによる取得だけでなくてもいいので、これを実現する方法があったら教えてください。
お願いします。
削除時のメッセージが出てこなくてもよければこんな方法もあるみたいですね。
selArrayにCell.Valueの値が保存されます。
Cellの削除時にも同じ物を使う場合はCommandBars("Cell")として同様に追加すればいいようですね。
[Workbook モジュール]
Private Sub Workbook_Open()
With Application.CommandBars("Row")
.Reset
With .Controls("削除(&D)...")
.OnAction = "deleteMacro"
End With
End With
With Application.CommandBars("Column")
.Reset
With .Controls("削除(&D)...")
.OnAction = "deleteMacro"
End With
End With
End Sub
[Workbook モジュール]
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Row").Reset
Application.CommandBars("Column").Reset
End Sub
[Module1 モジュール]
Private selArray() As Variant
Sub deleteMacro()
Dim selRow As Long
Dim selRows As Long
Dim startRow As Long
Dim selCol As Integer
Dim selCols As Integer
Dim startCol As Integer
startRow = Selection.Row
selRows = Selection.Rows.Count - 1
startCol = Selection.Column
selCols = Selection.Columns.Count - 1
ReDim selArray(selRows, selCols)
For selRow = 0 To selRows Step 1
For selCol = 0 To selCols Step 1
selArray(selRow, selCol) = Cells(startRow + selRow, startCol + selCol).Value
Next
Next
MsgBox selRows & selCols
Selection.Delete
End Sub
コメント(1件)
の記述はテストに使ったものでした。
削除してください。