0
我第一次尝试创建Excel VBA。如何将参数传递给VBA中的撤消处理程序
下面的宏本质上改变了细胞范围内部的背景。
GenerateMarkerOnSheet将内部设置为黑色。 ResetMarkerOnSheet旨在回滚撤消上的更改。
是否有可能通过 Application.OnUndo?将前一个内部作为参数传递给撤消手柄(ResetMarkerOnSheet)?
如果是这样,我应该怎么做呢?
Sub GenerateMarkerOnSheet()
'
' GenerateMarkerOnSheet Macro
' Macro recorded 29/01/2010 by Everyone
'
'
StartIndex = 99
RangeGap = 100
StartCell = "A"
EndCell = "BU"
PreviousBackground = 1
Do While StartIndex < 65536
For Each c In Worksheets(ActiveSheet.Name).Range(StartCell & StartIndex & ":" & EndCell & StartIndex)
If PreviousBackground = 1 Then
PreviousBackground = c.Interior.ColorIndex
End If
c.Interior.Color = RGB(0, 0, 0)
Next
StartIndex = StartIndex + RangeGap
Loop
' How to pass PreviousBackground to the call below
Application.OnUndo "Undoing", "ResetMarkerOnSheet"
End Sub
Sub ResetMarkerOnSheet()
'
' ResetMarkerOnSheet Macro
' Macro recorded 29/01/2010 by Everyone
'
'
StartIndex = 99
RangeGap = 100
StartCell = "A"
EndCell = "BU"
Do While StartIndex < 65536
For Each c In Worksheets(ActiveSheet.Name).Range(StartCell & StartIndex & ":" & EndCell & StartIndex)
c.Interior.ColorIndex = PreviousBackground
Next
StartIndex = StartIndex + RangeGap
Loop
End Sub
谢谢,但可以从'Application.OnUndo'提供撤销处理程序。 虽然有好主意,但要使用隐藏的工作表。 我会给它一个镜头! – Everyone 2010-02-03 12:00:51