2017-04-06 31 views
5

我有一張工作表,我讓我的員工填寫完畢,並計算了要鎖定的單元格,以便它們不能更改它們。我選擇了單元格和選定的屬性,並確保選中「鎖定」複選框。當我保護工作表/工作簿時,「導出到csv」宏按鈕停止工作。爲了能夠完成宏觀我插入這個VB代碼插入到工作簿:如何鎖定包含公式的單元格,但仍然允許宏運行?

Private Sub Workbook_Open() 

Dim wSheet As Worksheet 
For Each wSheet In Worksheets 

    wSheet.Protect Password:="password", _ 
    UserInterFaceOnly:=True 

Next wSheet 


End Sub 

這個工作卻不得不讓我鎖定的公式能夠即使他們被鎖定要編輯的意想不到的副作用。只有包含非公式值的單元格保持鎖定狀態。允許宏但仍然鎖定公式單元格的正確方法是什麼?

+0

如果您希望在新數據上重新計算單元格,則可能需要在公式塊中設置「.Value = Value」,並用'.Formula =「...」'重新設置公式。事件子Worksheet_Calculate被視爲「宏」。 – Jeeped

+0

@Jeeped如果要在宏末尾更改'UserInterFaceOnly',該怎麼辦?請看看我的答案,並讓我知道這是否有效。我現在無法訪問excel來測試它。 – Masoud

+0

@Masoud - 就在我頭頂,Workbook_Open對於ThisWorkbook代碼片是私有的。我不確定你可以打電話。 – Jeeped

回答

0

我的解決方案是鎖定整個工作簿和工作表,然後編碼到VB按鈕禁用鎖定然後重新啓用宏。像這樣:

Sub MyMacro() 

Sheet1.Unprotect Password:="password" 

    'insert code here 

    Sheet1.Protect Password:="password" 

End Sub 

然後我刪除了我的Workbook_Open代碼。

相關問題