【エクセルVBA】

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/06/05 14:42:52
  • 終了:2006/06/12 14:45:03

回答(1件)

id:Kenju No.1

Kenju回答回数30ベストアンサー獲得回数22006/06/06 11:49:52

ポイント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
    の記述はテストに使ったものでした。
    削除してください。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません