人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: にぎたま
●カテゴリ:コンピュータ
✍キーワード:VBA イベント エクセル 配列
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Kenju
●60ポイント

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ