2013-01-16 63 views
0

我爲工作表編寫了代碼,並且每次更改數字時,如果變量大於10%,20%或+ 20%,它就會更改顏色。所以我在「General」和「Private Sub Selection_Worksheet」上都使用了宏代碼,這樣每當單元格的編號發生變化時,它就會改變顏色。在受保護的工作表中啓用宏

我已經鎖定和隱藏的一些顯示公式的單元格,並寫了一碼

Sheets("Financials").Protect Password:="Ottawa", UserInterFaceOnly:=True 

在一般和「私人小組Selection_Worksheet」,它給了我一個運行時錯誤每次我點擊任何細胞。

我該如何解決這個問題?我只希望他們使用某些單元格,並在受保護和隱藏時仍然運行宏。

感謝,

丹尼爾

+0

你需要向我們展示你的代碼。 – RBarryYoung

回答

0

UserInterface:=True保護是不幸的是有點誤導:如果重新打開保存後的文件,這一地位已被丟失,工作表被再次全面保護。

因此,這是更好地改變你的代碼來處理保護,太:

 

Private Const cStrPwd as String = "Ottawa" 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    'Your conditions to check if code should run go here, e.g.: 
    If Application.Intersect(Target, Me.Range("A1:B10")) Is Nothing Or _ 
     Me.Range("B2") < 0.2 Then Exit Sub 

    Me.Unprotect Password:=cStrPwd 

    'Your code here 
    MsgBox "You've successfully done something! Nice job, mate!" 

    Me.Protect Password:=cStrPwd 
End Sub 
+0

嗨,彼得,謝謝你的迴應;但是,我不太瞭解上面的功能,因爲我是VBA新手。 如果Application.Intersect(Target,Me.Range(「A1:B10」))爲Nothing或_Me.Range(「B2」)<0.2則退出子 這是什麼意思? – Doolie1106

+0

該行只是一個示例 - 在此示例中,它檢查所選範圍是否超出A1:B10的範圍,或者單元格B2的值是否小於20%。如果任一條件成立,程序的其餘部分將被忽略。希望這可以讓事情變得更加清晰,並且可以根據需要進行修改。 –

+0

請注意:根據您的需要,我認爲'Worksheet_Change'可能比'Worksheet_SelectionChange'更合適:每當您選擇任何單元時觸發後者 - 只有當您實際更改工作表中的某些內容時纔會觸發前者。 –

相關問題