Excel(VBA):禁用除粗体字体外的单元格格式

时间:2013-02-04 10:33:13

标签: excel vba formatting cell

我想禁用更改单元格的格式,除了使字体加粗。有没有办法实现这个目标?

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

我认为也许在Ribbon上制作自定义按钮可以为此服务(即取消保护工作表,使内容变粗并再次保护),但我想知道是否有更方便的方法解决这个问题。

我在http://www.excelforum.com/excel-programming-vba-macros/676299-use-vba-to-lock-all-cell-formatting-except-background-color.html遇到了类似的问题 - 但它仍然没有解决。

1 个答案:

答案 0 :(得分: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

限制是它仅适用于键盘快捷键,而不适用于功能区按钮。我想你可以创建一个自定义按钮并将其“伪装”为Bold按钮,但它仍然是一个不完美的解决方法。