0

セルが太字かどうかを検出するカスタム関数があります

Function isBold(cellBold)
If cellBold.Font.Bold = True Then
    isBold = 1
ElseIf cellBold.Font.Bold = False Then
    isBold = 0
Else
    isBold = 0
End If

End Function

参照セルが太字の場合はセルに 1 を、太字でない場合は 0 を入れます。これは最初からうまく機能しますが、参照セルを太字にすると、数値は 0 のままです。自動計算がオンになっているため、再計算する関数は、関数を再入力することです

4

2 に答える 2

0

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 つのグローバル変数を設定することで機能します。

選択された最後のセルが以前に太字であったかどうかを示すブール変数。そして、同じセルを参照する文字列変数。そのため、現在存在していたセルの現在の太字状態に対して、終了した (入力された) セルの太字状態を確認できます。変更があった場合は、ブックが計算されます。そうでなければ、何も起こりません。

これが機能して役立つことを願っています。

乾杯

于 2013-06-13T15:54:00.930 に答える