2013-02-04 106 views
2

我想禁用更改單元格的格式,但使字體粗體。有什麼辦法可以實現嗎?Excel(VBA):禁用單元格格式化,但粗體字體除外

顯然, .Protect AllowFormattingCells:=True啓用所有可能的格式更改。

我認爲可能在功能區上製作自定義按鈕可以用於此目的(即不保護表單,使內容變爲粗體並再次保護),但我不知道是否有更方便的方法來解決此問題。

我遇到過類似問題http://www.excelforum.com/excel-programming-vba-macros/676299-use-vba-to-lock-all-cell-formatting-except-background-color.html - 但它也沒有解決。

+0

記錄一個宏:)然後把它放在一個小函數中,如果你喜歡,並且在需要時調用它.. – bonCodigo

+0

你可以使用像[this one]這樣的方法(http://stackoverflow.com/questions/12064439/VBA的工作表-變化檢測-實際小區變更/ 12068586#12068586)。除了比較舊的和新的'.Value',你會比較舊的和新的格式,並且如果改變是粗體字以外的其他格式,則還原爲舊格式。 –

+0

但請記住,如果您決定使用Worksheet_Change等事件,則必須考慮到要使用的參數TARGET是範圍,因此它可以跨越多個單元格。 –

回答

0

不是一個完美的解決方案,但可能的解決方法。放在ThisWorkbook模塊,粘貼這些事件:

Private Sub Workbook_Activate() 
Application.OnKey "^b", "MakeBold" 
End Sub 

Private Sub Workbook_Deactivate() 
Application.OnKey "^b" 
End Sub 

然後,在常規模塊:

Sub MakeBold() 
ActiveSheet.Unprotect 
On Error Resume Next 
Selection.Font.Bold = Not (Selection.Font.Bold) 
On Error GoTo 0 
ActiveSheet.Protect 
End Sub 

侷限性是它僅適用於鍵盤快捷鍵,而不是功能區按鈕。我想你可以創建一個自定義按鈕並將其「僞裝」爲粗體按鈕,但它仍然是一個不完善的解決方法。

相關問題