文字列に下線を設定・解除する方法
今回の目標
この記事では、文字列に下線を設定・解除する方法や、下線が設定されているかを取得する方法を解説します。
目標リスト
- 文字列に下線を設定・解除できるようになる
- 文字列に下線が設定されているか確認できるようになる
- セル内の一部の文字のみ、下線を設定できるようになる
Font.Underline プロパティについて
Excelの下線の種類について
Excelでは、5種類の下線を設定することができます。
一本の下線(テキストに下線/セルに下線)と二本の下線(テキストに下線/セルに下線)に、下線無しの計5種類です。
ExcelVBAで、全5種類の下線の設定ができます。
文字列の下線のサンプルです。
| 種類 | 下線の長さ | サンプル画像 |
|---|---|---|
| 一本の下線 | テキスト | ![]() |
| 二本の下線 | テキスト | ![]() |
| 一本の下線 | セル | ![]() |
| 二本の下線 | セル | ![]() |
| 下線無し | - | ![]() |
Font.Underline プロパティとは
Font.Underline プロパティは、Rangeオブジェクトに含まれる Font オブジェクトのプロパティで、下線の設定及び設定状況を取得できます。
取得時は Variant 型(実際は Long型)の値です。
Font.Underline プロパティの定数
Font.Underline プロパティで使用する定数です。
| 種類 | 下線の長さ | 名前 | 定数 |
|---|---|---|---|
| 一本の下線 | テキスト | xlUnderlineStyleSingle | 2 |
| 一本の下線 | セル | xlUnderlineStyleSingleAccounting | 4 |
| 二本の下線 | テキスト | xlUnderlineStyleDouble | -4119 |
| 二本の下線 | セル | xlUnderlineStyleDoubleAccounting | 5 |
| 下線無し | - | 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
(下の画像のようになります)





