更改单元格颜色后,获取Excel中活动单元格的上一种格式(VBA)



我试图在单击一个单元格(也称为活动单元格(时更改它的颜色,然后在单击另一个单元格时使该单元格返回到以前的格式(格式包括以前的字体、文本颜色、边框和单元格颜色(。这是我用来改变单元格颜色的代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Range("PrevCell").Borders.ColorIndex = 0
ActiveCell.Interior.ColorIndex = 3
With ActiveWorkbook.Names("PrevCell")
.RefersTo = ActiveCell
End With

End Sub

理想情况下,我需要一些只将单元格颜色替换为更改前的颜色的东西。

您可以尝试这样的方法。。。

Dim prevCell As Range
Dim clr As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If prevCell Is Nothing Then
Set prevCell = Target
clr = Target.Interior.ColorIndex
Target.Interior.Color = vbRed
Else
prevCell.Interior.ColorIndex = clr
clr = Target.Interior.ColorIndex
Target.Interior.Color = vbRed
Set prevCell = Target
End If
End Sub

根据新要求编辑:

要在保存文件后从活动单元格中删除红色,请进行以下设置。。。

在Module1等标准模块上声明以下公共变量:

Public prevCell As Range
Public clr As Long

板材模块代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If prevCell Is Nothing Then
Set prevCell = Target
clr = Target.Interior.ColorIndex
Target.Interior.Color = vbRed
Else
prevCell.Interior.ColorIndex = clr
clr = Target.Interior.ColorIndex
Target.Interior.Color = vbRed
Set prevCell = Target
End If
End Sub

本工作簿模块代码:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not prevCell Is Nothing Then prevCell.Interior.ColorIndex = clr
End Sub

最新更新