好的,所以我会第一个承认这不是一个理想的解决方案,而且非常hackish。但我认为它会解决你的解决方案。
将 volatile 行添加到您的代码后:
Function isBold(cellBold)
Application.Volatile True
If cellBold.Font.Bold = True Then
isBold = 1
ElseIf cellBold.Font.Bold = False Then
isBold = 0
Else
isBold = 0
End If
End Function
首先将您的 Workbook_Open 更改为:
Private Sub Workbook_Open()
Sheets("Sheet1").rngLastCell = Range("A1").Address
Sheets("Sheet1").fntLastCell = Range("A1").Font.Bold
End Sub
然后在您正在使用的工作表上(在我的示例Sheet1
中)将其添加到 Worksheet 函数中:
Option Explicit
Public fntLastCell As Boolean
Public rngLastCell As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Sheets("Sheet1").Range(rngLastCell).Font.Bold <> fntLastCell Then
Calculate
End If
Sheets("Sheet1").rngLastCell = Target.Address
Sheets("Sheet1").fntLastCell = Target.Font.Bold
End Sub
现在要让它工作,您必须保存然后关闭,然后重新打开您的工作表。
每次选择一个新单元格时,这通过设置 2 个全局变量来工作。
一个布尔变量,表示最后一个单元格选择的天气以前是否为粗体。还有一个引用同一个单元格的字符串变量。因此,您现在可以检查您退出(进入时)单元格的粗体状态与您刚刚存在的单元格的当前粗体状态,如果有更改,它将计算工作簿。否则什么都不会发生。
希望这有效并有所帮助,
干杯