2012-09-05 112 views
0

問題是當我用某些顏色突出顯示行的原始顏色消失時,所以我嘗試了此代碼,並且再次刪除了行的原始格式和顏色選中單元格時突出顯示整行而不丟失原信號行的原始格式?

這是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 

那麼,我該怎麼處理這個問題呢?如何保留範圍的歷史顏色,以便在取消選擇該行時正確恢復?

+0

我沒有看到這個代碼的問題 - 它對我來說工作正常。雖然我現在使用的是2003年,但目前還沒有進入2010年。你有沒有其他可能干擾這個的代碼?這不是很長,你是否已經通過它來確保它按照你的想法行事? – mkingston

+0

thnks爲您的重播,但代碼工程與excel 2003 gr8,但與Excel 2010失敗,所以我該怎麼辦? –

+0

好吧,在2007年嘗試過,工作正常,但它留下了亮點,只要宏停止(通過在VBE中使用stop/setback做到這一點),但事後再次正常工作 - 也許這會指出你在右邊方向。您是否在乾淨的工作簿上嘗試過代碼? – Jook

回答

1

用條件格式化它。

使用條件格式將單元格設置爲所需的顏色。作爲條件,請使用公式=ROW()=$C$12

然後(在此示例中)將C12更改爲您要突出顯示的行。將其設置爲您範圍外的一行以刪除突出顯示。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
ActiveSheet.Cells(12, 3) = Target.Row 
End Sub 
+0

這是一個聰明的想法,+1。我可以建議,儘管你提供了一點OP代碼?冒着冒犯的危險,我不確定他會如何描述。 – mkingston

+0

@mkingston,編輯顯示所需代碼的答案 – SeanC

+0

如何使用特定範圍的條件formtting,爲什麼特定範圍C12 ??? –

相關問題