OK、これが理想的な解決策ではなく、かなりハックであることを最初に認めます。しかし、それはあなたの解決策を修正すると思います。
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 つのグローバル変数を設定することで機能します。
選択された最後のセルが以前に太字であったかどうかを示すブール変数。そして、同じセルを参照する文字列変数。そのため、現在存在していたセルの現在の太字状態に対して、終了した (入力された) セルの太字状態を確認できます。変更があった場合は、ブックが計算されます。そうでなければ、何も起こりません。
これが機能して役立つことを願っています。
乾杯