文字列に下線を設定・解除する方法

今回の目標

この記事では、文字列に下線を設定・解除する方法や、下線が設定されているかを取得する方法を解説します。

目標リスト

  • 文字列に下線を設定・解除できるようになる
  • 文字列に下線が設定されているか確認できるようになる
  • セル内の一部の文字のみ、下線を設定できるようになる

Font.Underline プロパティについて

Excelの下線の種類について

Excelでは、5種類の下線を設定することができます。
一本の下線(テキストに下線/セルに下線)と二本の下線(テキストに下線/セルに下線)に、下線無しの計5種類です。 ExcelVBAで、全5種類の下線の設定ができます。

文字列の下線のサンプルです。

種類下線の長さサンプル画像
一本の下線テキスト下線サンプル(一本の下線、下線はテキスト基準)
二本の下線テキスト下線サンプル(一本の下線、下線は列の幅基準)
一本の下線セル下線サンプル(二本の下線、下線はテキスト基準)
二本の下線セル下線サンプル(二本の下線、下線は列の幅基準)
下線無し-下線サンプル(下線無し)

Font.Underline プロパティとは

Font.Underline プロパティは、Rangeオブジェクトに含まれる Font オブジェクトのプロパティで、下線の設定及び設定状況を取得できます。
取得時は Variant 型(実際は Long型)の値です。

Font.Underline プロパティの定数

Font.Underline プロパティで使用する定数です。

種類下線の長さ名前定数
一本の下線テキストxlUnderlineStyleSingle2
一本の下線セルxlUnderlineStyleSingleAccounting4
二本の下線テキストxlUnderlineStyleDouble-4119
二本の下線セルxlUnderlineStyleDoubleAccounting5
下線無し-xlUnderlineStyleNone-4142
一本の下線テキストTrue-
下線無し-False-

Font.Underline プロパティの構文

セルA1に下線を設定するプログラムです。

Range("A1").Font.Underline = True

● 注意点 ●
Underline プロパティへの代入時に、Trueは「xlUnderlineStyleSingle」と、Falseは「xlUnderlineStyleNone」と同じ動きをします。 ただし、下線が設定されているかを確認する際、Underline プロパティは数値(定数)で返すたので、True/False では判断できません。

セルA1に下線が引かれているか取得するプログラムです。取得結果はイミディエイトウィンドウに、数値で表示されます

Debug.Print Range("A1").Font.Underline

文字列に下線を設定・解除する

Rangeオブジェクトの Font.Underline を使って下線を設定、解除します。

サンプルコード

Sub FontUnderlineSample1()
    'サンプルテキストを入力する
    Range("B1:B5").Value = "地道に学ぶExcelVBA"
    
    '下線を解除する
    Range("A1") = "xlUnderlineStyleNone"
    Range("B1").Font.Underline = xlUnderlineStyleNone
    '一本の下線(下線の長さは全ての文字)
    Range("A2") = "xlUnderlineStyleSingle"
    Range("B2").Font.Underline = xlUnderlineStyleSingle
    '一本の下線(下線の長さは列の幅)
    Range("A3") = "xlUnderlineStyleSingleAccounting"
    Range("B3").Font.Underline = xlUnderlineStyleSingleAccounting
    '二重の下線(下線の長さは全ての文字)
    Range("A4") = "xlUnderlineStyleDouble"
    Range("B4").Font.Underline = xlUnderlineStyleDouble
    '二重の下線(下線の長さは列の幅)
    Range("A5") = "xlUnderlineStyleDoubleAccounting"
    Range("B5").Font.Underline = xlUnderlineStyleDoubleAccounting
End Sub
【実行結果】
(下の画像のようになります)
プログラム実行後の画像

文字列に下線が設定されているか確認する

簡潔に下線が設定されているか確認する

Rangeオブジェクトの Font.Underline で文字列に下線が設定されているか、簡潔に確認します。
「何も下線が設定されていない状態か」を確認することで、種類を問わず下線が設定されているかを確認します。

サンプルコード

Sub FontUnderlineSample2_1()

    '二本の下線(テキスト)を設定する / テスト用
    With Range("A1")
        .Value = "地道に学ぶExcelVBA"
        .Font.Underline = xlUnderlineStyleDouble
    End With
    
    'セルA1に下線が引かれているか確認する
    If Range("A1").Font.Underline = xlUnderlineStyleNone Then
        Debug.Print "セルA1に下線が設定されていません。"
    Else
        Debug.Print "セルA1に下線が設定されています。"
    End If
End Sub
【実行結果】
セルA1に下線が設定されています。

詳細に下線が設定されているか確認する

Font.Underline プロパティの設定値を調べて文字列にどの種類の下線が設定されているか確認します。
Select Case 構文を使用します。

サンプルコード

Sub FontUnderlineSample2_2()
    '一本の下線(テキスト)を設定する / テスト用
    With Range("A1")
        .Value = "地道に学ぶExcelVBA"
        .Font.Underline = xlUnderlineStyleSingle
    End With
    
    'セルA1に下線が引かれているか確認する
    Select Case Range("A1").Font.Underline
        Case xlUnderlineStyleSingle
            Debug.Print "セルA1に一本の下線(テキスト)が引かれています。"
        Case xlUnderlineStyleSingleAccounting
            Debug.Print "セルA1に一本の下線(セル)が引かれています。"
        Case xlUnderlineStyleDouble
            Debug.Print "セルA1に二本の下線(テキスト)が引かれています。"
        Case xlUnderlineStyleDoubleAccounting
            Debug.Print "セルA1に二本の下線(セル)が引かれています。"
        Case xlUnderlineStyleNone
            Debug.Print "セルA1に下線が設定されていません。"
    End Select
End Sub
【実行結果】
セルA1に二本の下線(テキスト)が引かれています。

文字列の一部に下線を設定する

文字列の一部に下線を設定する場合は、「Range」オブジェクトと「Font.Underline」プロパティの間に『Characters』を追加します。
詳細は別記事(※準備中)で説明しますが、『Characters(開始位置, 文字数)』プロパティを使用します。
例:Range("A1").Characters(3, 2).Font.Underline = True
 → セルA1の3文字目から2文字のみ(=3文字目と4文字目)、下線を設定する

サンプルコード

Sub FontUnderlineSample3()
    Dim st As Long
    Dim num As Long
    
    'セルA1にテキストを入力して、下線を解除する
    With Range("A1")
        .Value = "期限は「2025年12月31日」までです!"
        .Font.Underline = False
    End With
    
    '下線を設定する位置を決める
    st = InStr(Range("A1"), "「") + 1
    num = InStr(Range("A1"), "」") - st
    
    'セルA1の年月日の部分のみ、二重の下線を設定する
    Range("A1").Characters(st, num).Font.Underline = _
            xlUnderlineStyleDouble
End Sub
【実行結果】
(下の画像のようになります)
プログラム実行後の画像

関連リンク

ページの先頭へ