【发布时间】:2023-03-18 18:41:01
【问题描述】:
问题是当我用某种颜色突出显示一行时,该行的原始颜色消失了,所以我尝试了这段代码,它再次删除了该行的原始格式和颜色
这是来自http://www.mcgimpsey.com/excel/highlightrow.html的代码
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Const cnNUMCOLS As Long = 256
Const cnHIGHLIGHTCOLOR As Long = 36 'default lt. yellow
Static rOld As Range
Static nColorIndices(1 To cnNUMCOLS) As Long
Dim i As Long
If Not rOld Is Nothing Then 'Restore color indices
With rOld.Cells
If .Row = ActiveCell.Row Then Exit Sub 'same row, don't restore
For i = 1 To cnNUMCOLS
.Item(i).Interior.ColorIndex = nColorIndices(i)
Next i
End With
End If
Set rOld = Cells(ActiveCell.Row, 1).Resize(1, cnNUMCOLS)
With rOld
For i = 1 To cnNUMCOLS
nColorIndices(i) = .Item(i).Interior.ColorIndex
Next i
.Interior.ColorIndex = cnHIGHLIGHTCOLOR
End With
End Sub
那么,这个问题我该怎么办呢?如何保留范围的历史颜色,以便当我取消选择该行时它会正确恢复?
【问题讨论】:
-
我看不出这段代码有什么问题——它对我来说很好用。不过,我使用的是 2003,目前无法访问 2010。您是否有任何其他可能干扰此的代码?时间不是很长,你有没有通过它来确保它在做你认为的事情?
-
感谢您的重播,但代码适用于 gr8 与 excel 2003,但与 excel 2010 失败,那我该怎么办???。
-
好的,在 2007 年尝试过,工作正常,但它会在宏停止时留下突出显示(通过在 VBE 中使用 stop/setback 做到这一点),但之后它再次正常工作 - 也许这将为您指明正确的方向。您是否在干净的工作簿上尝试过代码?
标签: excel excel-2010 vba