下面的代碼適用于事件,SelectionChange完全沒有任何問題。但是,如果我移動到它 event Calculate ,則會出現此錯誤,Method 'Undo' of object '_Application' failed。Worksheet_Change 上還有另一個代碼,但我認為這不是問題的原因。
Private Sub worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Cells.CountLarge = 1 Then
Dim Column_A As Range
Set Column_A = ActiveSheet.Range("A3", ActiveSheet.Range("A" & ActiveSheet.Rows.count).End(xlUp))
If ActiveSheet.FilterMode = True Then
Column_A.Interior.Color = RGB(255, 0, 0)
Else 'FilterMode = False
Column_A.Interior.Color = RGB(255, 255, 255)
End If
End If
End Sub
我試圖If Target.Cells.CountLarge = 1在事件計算中使用,但這個錯誤引發了
物件需要
一如既往,非常感謝您的支持
uj5u.com熱心網友回復:
在閱讀您的帖子和最近的評論時,我無法確定(有任何確定性)您實際上想要做什么。采取最佳猜測的方法,我整理了以下內容。僅當單元格 AL1 的值作為該計算的一部分發生更改時,它才會在計算事件中執行操作。
Option Explicit
''' Reference value register
Private mvnRefValue
''' Initialise Reference value when sheet first activated
Private Sub Worksheet_Activate()
If mvnRefValue = Empty Then mvnRefValue = Range("AL1")
End Sub
Private Sub Worksheet_Calculate()
Dim Column_A As Range
If Range("AL1") <> mvnRefValue Then
With ActiveSheet
Set Column_A = .Range("A3", .Range("A" & .Rows.Count).End(xlUp))
End With
If ActiveSheet.FilterMode = True Then
Column_A.Interior.Color = RGB(255, 0, 0)
Else 'FilterMode = False
Column_A.Interior.Color = RGB(255, 255, 255)
End If
''' Update mvnRefValue
mvnRefValue = Range("AL1")
End If
End Sub
如果您想測驗更復雜的更改場景,請酌情采用上面使用的概念(和/或更全面地解釋如果您實際上要做什么)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/342812.html
上一篇:在陣列VBA中重復偶數
