我有一个Excel工作表2010及以下要求:
这里是我的代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static xLastRng As Range
On Error Resume Next
Target.Interior.ColorIndex = 6
xLastRng.Interior.ColorIndex = xlColorIndexNone
Set xLastRng = Target
End Sub
这是一个有趣的任务!这将需要几个步骤:
1)添加一个标准模块(例如模块1),并创建两个公共变量:
Public g_lngEXISTINGCOL As Long
Public g_rngPREVIOUSTARGET As Excel.Range
2)让我们回到你的工作表事件,则需要使用下面的代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngTarget As Excel.Range
On Error Resume Next
Set rngTarget = Application.Intersect(Me.UsedRange, Target)
On Error GoTo 0
If Not rngTarget Is Nothing Then
If rngTarget.Cells.Count = 1 Then
With Target
If Not g_rngPREVIOUSTARGET Is Nothing Then
If g_lngEXISTINGCOL = 16777215 Then
g_rngPREVIOUSTARGET.Interior.ColorIndex = 0
Else
g_rngPREVIOUSTARGET.Interior.Color = g_lngEXISTINGCOL
End If
End If
g_lngEXISTINGCOL = .Interior.Color
Set g_rngPREVIOUSTARGET = Target
.Interior.ColorIndex = 6
End With
End If
End If
End Sub
3)为了保存工作簿之前返回到原来的内饰颜色,你需要“的ThisWorkbook”双击并添加BeforeSave事件:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not g_rngPREVIOUSTARGET Is Nothing Then
g_rngPREVIOUSTARGET.Interior.Color = g_lngEXISTINGCOL
End If
End Sub
希望能帮助到你!