我使用下面的代碼在行被洗掉和插入時觸發某些事件,這段代碼的好處是它區分了插入和洗掉的行,從而在每種情況下觸發事件,唯一的限制是它如果您對作業簿所做的第一次更改是添加或洗掉行,則不起作用,但在第一次更改后它可以正常作業。有誰知道如何解決這個問題?有人在代碼之前建議了一個 Worksheet_Activate 事件,但我太缺乏經驗,無法弄清楚......
首先我們定義一個范圍名稱(RowMarker =$A$1000)
Private Sub Worksheet_Change(ByVal Target As Range)
Static lngRow As Long
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("RowMarker").RefersToRange
If lngRow = 0 Then
lngRow = rng1.Row
Exit Sub
End If
If rng1.Row = lngRow Then Exit Sub
If rng1.Row < lngRow Then
MsgBox lngRow - rng1.Row & " rows removed"
Else
MsgBox rng1.Row - lngRow & " rows added"
End If
lngRow = rng1.Row
End Sub
uj5u.com熱心網友回復:
- 請復制作業表代碼模塊中的下一個代碼,以進行處理(覆寫現有代碼事件):
Option Explicit
Private Sub Worksheet_Activate()
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("RowMarker").RefersToRange
ThisWorkbook.lRow = rng1.row
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Static lngRow As Long
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("RowMarker").RefersToRange
If lngRow = 0 Then lngRow = ThisWorkbook.lRow
If lngRow = 0 Then 'only for the case you copied the code and forgot sheet activating...
lngRow = rng1.row
Exit Sub
End If
If rng1.row = lngRow Then Exit Sub
If rng1.row < lngRow Then
MsgBox lngRow - rng1.row & " rows removed"
Else
MsgBox rng1.row - lngRow & " rows added"
End If
lngRow = rng1.row
End Sub
1.1 在ThisWorkbook
代碼模塊中復制這段代碼:
Public lRow As Long
Private Sub Workbook_Open()
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("RowMarker").RefersToRange
lRow = rng1.row
End Sub
停用活動作業表(轉到其他作業表)并激活它(回傳)。只是第一次!當您打開作業簿并轉到該特定作業表時,會自動觸發該事件。
嘗試解決方案并發送一些反饋
lRow
也可以在沒有靜態變數的情況下使用,但我嘗試保持您的初始代碼不變,僅在第一次Change
觸發事件時修改它以獲得參考。
uj5u.com熱心網友回復:
添加作業簿事件
Private Sub Workbook_Open()
Sheet1.lrow = Sheet1.Range("RowMarker").Row
End Sub
作業表事件
Public lrow As Long
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n as Long
n = Me.Range("RowMarker").Row - lrow
lrow = Me.Range("RowMarker").Row
If n > 0 Then
MsgBox n & " rows inserted"
ElseIf n < 0 Then
MsgBox n & " rows removed"
End If
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/321463.html
標籤:擅长 vba excel-2010