2017-01-27 18 views
0

嘗試更改單元格的顏色(如果用戶更改單元格)。目前它改變了我改變一些內容後選擇的下一個單元格。如果用戶更改單元格的內容,請更改單元格的顏色

Private Sub Worksheet_Change(ByVal Target As Range) 
If Environ("Username") = "HelloWorld" Then 
    With ActiveCell.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = 7195899 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
End If 
End Sub 
+2

將ActiveCell.Interior改爲使用Target.Interior,因爲您將'ActiveCell'作爲'Target'傳遞給'Worksheet_Change'事件 –

回答

1

你只需要改變「ActiveCell.Interior」到「Target.Interior」:

Private Sub Worksheet_Change(ByVal Target As Range) 
If Environ("Username") = "HelloWorld" Then 
    With Target.Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .Color = 7195899 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
End If 
End Sub 

這是因爲該子被觸發您更改任意單元格後,所以「ActiveCell」引用不同於「目標」。

快樂編碼!

+0

哇,這樣一個簡單的解決方案!我唯一的問題是它現在刪除容量來撤消 – Lowpar

+0

據我所知,所有的宏刪除能力撤消,你想撤消只是格式?也許你可以在代碼中添加一些條件來防止你希望避免的某些事情,所以不需要撤消。或者您可以使用條件格式作爲條件,並將用戶名保存在「VeryHidden」工作表中,以便用戶無法修改它。然後你可以將這個條件引用到用戶名。 –

+0

是的,如果用戶不能撤消,用戶友好度會大大降低,如果用戶發生錯誤,他們就不能按撤消。 – Lowpar