2016-11-09 83 views
0

因此,使用宏我可以創建新工作表,其中一些單元格將被鎖定。我在宏中使用此方法:如何在Excel中處理這個單元格鎖? (VBA)

ActiveSheet.Protect UserInterfaceOnly:=False(對於整個新的工作表) 然後在這個宏的一些細胞:locked = False

然後鎖定屬性,其他的宏切換特定細胞的使用真或假鎖。例如,此表中的一個表被鎖定,但是按鈕的宏重新計算並重寫表的值,並且在宏的開始處table.Locked = False和宏Locked = True的末尾再次執行此操作。

但是當我保存Excel,關閉並重新打開它,我按下按鈕,但我得到"unable to set the Locked property"

我應該怎樣做呢?

更新:

Sub userinterface() 

ActiveSheet.Protect UserInterfaceOnly:=True 

End Sub 


Sub locking() 

Range("A1").Locked = False 
Range("A1") = 5 
Range("A1").Locked = True 

End Sub 

所以我有一個新的工作表,和我運行用戶接口宏。它鎖定整張紙。然後我運行鎖定宏,在給定單元格中寫入5並再次鎖定單元格。之後,我保存Excel,關閉並打開它,我只想運行鎖定宏。此時我收到錯誤。

+1

Máté,我們需要的是一個最小的,完整的,可驗證的例子來重現這個問題,如下所示:http://stackoverflow.com/help/mcve沒有這些,我很難理解你似乎經歷過的問題並不能重現它(爲了解決它)。因此,請添加您當前使用的完整代碼來鎖定文件(所有相關的宏及其放置位置:例如作爲工作表事件,或者在文件關閉時作爲事件執行等)。也許那麼我們可以重現你的問題。 – Ralph

+0

當然,它會很短。 –

+1

這是你的全部代碼嗎?沒有什麼可以表明這不應該工作得很好?在你的問題中你說'table.locked = False',但是代碼中有其他說明嗎? –

回答

1

顯然,UserInterfaceOnly選項未與文件一起存儲,並且重新打開後,工作表完全受保護,您無法解鎖受保護工作表上的單元格。

可以重置UserInterfaceOnly選項,而不在您的例子不保護所以這將是

Sub locking() 

    ActiveSheet.Protect UserInterfaceOnly:=True 
    Range("A1").Locked = False 
    Range("A1") = 5 
    Range("A1").Locked = True 

End Sub 

當然,在這個例子中解鎖電池是沒有必要的,因爲您已設置的選項設置爲true,但我認爲這是與你的完整宏有關。

+0

謝謝,它會很好。我認爲用戶界面保護會鎖定未鎖定的單元格,但正如我所看到的那樣。所以我只需要在宏的開頭寫這個。 –

相關問題