VBAのFont.Boldで太字にならない。

信一 中嶋 60 評価のポイント
2026-03-04T06:04:38.7266667+00:00

Excel2021のVBAで「特定のセルを強調する」ため下記ソースを実行すると、その下の図に示すように.Colorで文字の色が変化するが、.Boldで文字が太字になりません。なお、「セルの書式設定」で太字設定を行うと太字になるため、太字フォントは実装しています。どこが間違っているのでしょうか?

注)関数自身のセルを変更することになりますが、書式のみの変更の為問題ないと思われます。

'素因数分解(素数強調)

Public Function SoinsuuRg(n As Range, Optional c As Integer = 2) As String

nll^ = n.Cells(1, 1).Value                                      'nを64Bit整数化(LongLong)

s$ = Soinsuu(nll^)                                              '素因数分解

SoinsuuRg = "= " & s$                                           '先頭に=を付加

With n.Cells(1, c).Font                                         'オブジェクト名の修飾

    If InStr(s$, "*") = 0 And InStr(s$, "^") = 0 Then           '素数を強調

            .Color = RGB(255, 0, 0)                             'Fontを赤に設定

            .Bold = True                                        'Fontを太字に設定

    Else:   .Color = RGB(0, 0, 0)                               'Fontを黒に設定

            .Bold = False                                       'Fontを標準に設定

    End If

End With
End Function

Font設定


<モデレーター注>
質問内容をもとにタグを「Microsoft 365 と Office | Excel | その他 | Windows」→「開発者テクノロジ」に変更しました。

開発者テクノロジ | Visual Basic for Applications
0 件のコメント コメントはありません

質問作成者が受け入れた回答
motosan 3,570 評価のポイント
2026-03-04T12:12:10.4833333+00:00

「udf 他のcell のフォント変更」 の Copilot Search の回答です。

  • ExcelのUDFは基本的に計算結果を返すだけで、セルの書式(フォントや色など)を直接変更することは推奨されていません。UDFはセル参照から値を返すことしかできず、書式設定の変更は通常VBAのSubプロシージャを使います。しかし、VBAマクロであれば他のセルのフォントを変更可能です。

UDFとしてではなくSubで使う理由

  • UDFではExcelのセルフォーマットにはアクセスできないため、フォント変更はSubプロシージャを使う必要があります。 UDFでフォント変更を試みても、Excelは警告を出すか、無視されます。

補足

  • 条件付き書式でも簡単なフォント変更は可能ですが、より柔軟な操作にはVBAマクロが必要です。

実際は色だけは変更できているようですが、UDF(ユーザ定義関数)でなくSubプロシージャか Worksheet イベント を使うことを検討した方が良いと思います。

追記)

条件付き書式でもよさそうに思います。

"*" も "^" も含まない場合フォントの色と太字のスタイルを変更すれば良いのではありませんか?

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。

1 件の追加の回答

並べ替え方法: 古い順
  1. simo-k 96,220 評価のポイント ボランティア モデレーター
    2026-03-04T10:33:04.7266667+00:00

    > 関数自身のセルを変更することになりますが、書式のみの変更の為問題ないと思われます
    ワークシート関数は値を返すものです。
    フォント変更などは基本的にサポートされていません。
    そして、あなたのワークシート関数では循環参照が発生して、色変更は3回実行している筈です。
    (更に、オマケとして保存前にも自動計算などによりマクロが走って3回色変更ですね。)

    ユーザー操作、条件付き書式、(ワークシート関数以外の)マクロなどで対応してください。

    この回答は役に立ちましたか?


お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。