【问题标题】:Excel (VBA): Disabling cell formatting except bold fontExcel (VBA):禁用除粗体以外的单元格格式
【发布时间】:2013-02-04 10:33:13
【问题描述】:

我想禁止更改单元格的格式,但字体加粗除外。有什么方法可以实现吗?

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

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

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

【问题讨论】:

  • 录制一个宏 :) 然后如果你愿意,可以把它放在一个小函数中,并在必要时调用它..
  • 您可以使用this one 之类的方法。除了比较旧的和新的.Value 之外,您需要比较新旧格式,如果更改不是粗体字体,则恢复为旧格式。
  • 但请记住,如果您决定使用 Worksheet_Change 之类的事件,您必须考虑到您将要使用的参数 TARGET 是一个 Range,因此它可以跨越多个单元格。跨度>
  • @Jean 所以你不必为此取消保护工作表? :) 至于事件,OP可以通过the Application.EnableEvents = False关闭它
  • 我刚刚检查过,Worksheet_Change 事件不会在字体样式更改或任何其他格式更改时触发。

标签: excel vba formatting cell


【解决方案1】:

不是一个完美的解决方案,而是一个可能的解决方法。在 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多