【エクセルVBA】

行や列を削除したときにイベントを取得したいと思っています。一応調べましたが、そのようなイベントはどうやらないようなのですが。。。
やりたいことは、ある行(例:F)が削除されたときに、その行にあった内容を配列か何かに入れておきたいのです。イベントによる取得だけでなくてもいいので、これを実現する方法があったら教えてください。
お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/06/12 14:45:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:Kenju No.1

回答回数30ベストアンサー獲得回数2

ポイント60pt

削除時のメッセージが出てこなくてもよければこんな方法もあるみたいですね。

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

http://www.viplt.ne.jp/tllsp/tips/tips_bar_button.htm

  • id:Kenju
    MsgBox selRows & selCols
    の記述はテストに使ったものでした。
    削除してください。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません