2013-03-20 79 views
1

我很好奇是否可以將Excel工作表的保護狀態傳遞給該工作表的單元格。 例如將Excel工作表的保護狀態傳遞給單元格

  • Sheet1中被鎖定以進行編輯...細胞A1進行編程,說「鎖定」
  • Sheet1中解鎖...細胞A1會說「解鎖」

工作表上的按鈕將用於打開和關閉工作表保護。

使用workbook_open事件打開時,我的工作表將被鎖定。

這是用於表格,我不希望公式在使用時被全部取消,但可能需要完全訪問。它更多地提醒用戶他們處於「解鎖」模式,因此要格外小心。

使用VBA已成定局嗎?

我是VBA小白,但不介意使用代碼作爲這個

任何想法的解決方案或建議,歡迎

回答

1

你可以使用代碼在工作表Sheet1上的ActiveX按鈕,操作也很簡便

Const strPAss = "test" 

Private Sub CommandButton1_Click() 
If ActiveSheet.ProtectContents Then 
ActiveSheet.Unprotect strPAss 
[a1].Value = "unlocked" 
Else 
[a1].Value = "locked" 
ActiveSheet.Protect strPAss 
End If 
End Sub 
+0

謝謝,brettdj - 這可以滿足我的要求。使用activex控件對使用它們的VBA代碼有任何影響嗎? – JohnM 2013-03-20 22:24:58

1

工作表的代碼模塊將這個,這將放置一個提醒在狀態欄(這可以避免需要鎖定/解鎖工作表,以便將狀態寫入單元格A1)。

把它放在Sheet1代碼模塊中。每次激活sheet1時宏都會執行。

Private Sub Worksheet_Activate() 
If ActiveSheet.ProtectContents then 
    Application.StatusBar = "This sheet is protected" 
Else: 
    Application.StatusBar = "This sheet is unprotected" 
End If 
End Sub 

Private Sub Worksheet_Deactivate() 
    Application.StatusBar = False 
End Sub 

保護/解除保護,你可以添加這一個插入>模塊工作表。然後附加這些宏以分離命令按鈕,或者從Developer> Macros功能區運行。

Const myPassword as String = "password" '<-- replace "password" with your password 

Sub Sht1Protect() 
    Sheet1.Protect myPassword 
End Sub 

Sub Sht1Unprotect() 
    Sheet1.Unprotect myPassword 
End Sub 

爲了保證片始終受到保護,當你關閉文件,工作簿的代碼模塊

Private Sub Workbook_Close() 
    Sht1Protect 
End Sub 

您可能需要額外的處理,以控制該文件是否被保存/未插入此保存等

+0

感謝大衛 - 一些noob問題...我把這個到sheet1的代碼模塊或去插入>模塊?我已經把它放在了VBA編輯器中,並通過了它。它可以作爲一個宏鏈接到一個按鈕,或者我是否使用Excel內置的保護工作表切換?我可以在完成後自動更新到受保護/未受保護的位置嗎? – JohnM 2013-03-20 03:02:25

+0

嗨@JohnM,看我的修訂。 – 2013-03-20 04:21:15

+0

感謝大衛,雖然這工作,對我的實施,我寧願能夠格式化單元格,使其狀態更明顯的用戶。 – JohnM 2013-03-20 22:23:00

相關問題