Underlineプロパティ
Excelでセルの文字列に下線を設定するにはホームタブ→フォント の「U(下線付き)」をクリックします。もう一度クリックすると下線が無くなります。「U」の右にある▼を押すと下線の種類を選ぶことが出来ます。
これをVBAで行うにはUnderlineプロパティを利用します。
構文
1 |
Fontオブジェクト.Underlineプロパティ |
親オブジェクトとしてFontオブジェクトを指定します。
取得する値はXlUnderlineStyle列挙型のLong型の値で、下線なし、下線、二重下線、下線(会計)、二重下線(会計)の5種類になります。会計用の下線は文字列だけでなくセルの全体に下線が設定されます。
設定する場合は取得のときと同様で、以下のXlUnderlineStyle列挙型を設定します。
なお、XlUnderlineStyle列挙型ではありませんが、TrueとFalseでも設定することが可能です。
定数 | 値 | 内容 |
---|---|---|
xlUnderlineStyleNone | -4142 | 下線なし |
xlUnderlineStyleSingle | 2 | 下線 |
xlUnderlineStyleDouble | -4119 | 二重下線 |
xlUnderlineStyleSingleAccounting | 4 | 下線(会計) |
xlUnderlineStyleDoubleAccounting | 5 | 二重下線(会計) |
False | False | 下線なし |
True | True | 下線 |
サンプルコード
以下は指定セル範囲の文字列の下線状態の取得と、下線の設定を行うサンプルコードです。
2行目の変数定義ではLong型を指定していますが、XlUnderlineStyle列挙型でも構いません。ただしXlUnderlineStyle列挙型の変数とした場合、Underlineプロパティの値がNullの場合は代入できずにエラーとなるため、事前にNullかどうかのチェックが必要になります。
1 2 3 4 5 6 7 8 9 10 |
Sub UnderlineTest() Dim ul As Long '// 下線状態を取得 ul = ActiveCell.Font.Underline '// 下線を設定 ActiveCell.Font.Underline = True ActiveCell.Offset(0, 1).Font.Underline = xlUnderlineStyleSingle End Sub |
指定セル範囲の下線の設定と解除を切り替える関数
以下の関数は指定セル範囲の下線の種類を切り替えるマクロです。実行するたびに5種類の下線が切り替わります。
2行目ではXlUnderlineStyle列挙型の変数としていますが、Long型としても構いません。
4行目から8行目ではUnderlineプロパティの値がNullの場合は下線なしを初期値とし、そうでない通常の場合は引数セル範囲のUnderlineプロパティ値を初期値としています。
それ以降の処理では下線なし→下線→二重下線→下線(会計)→二重下線(会計)→下線なし、と切り替えています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
Sub ChangeUnderline(r As Range) Dim ul As XlUnderlineStyle If (IsNull(r.Font.Underline) = True) Then ul = xlUnderlineStyleNone Else ul = r.Font.Underline End If '// 下線なしの場合 If (ul = xlUnderlineStyleNone) Then '// 下線を設定 ul = xlUnderlineStyleSingle '// 下線の場合 ElseIf (ul = xlUnderlineStyleSingle) Then '// 二重下線を設定 ul = xlUnderlineStyleDouble '// 二重下線の場合 ElseIf (ul = xlUnderlineStyleDouble) Then '// 下線(会計)を設定 ul = xlUnderlineStyleSingleAccounting '// 下線(会計)の場合 ElseIf (ul = xlUnderlineStyleSingleAccounting) Then '// 二重下線(会計)を設定 ul = xlUnderlineStyleDoubleAccounting '// 二重下線(会計)の場合 ElseIf (ul = xlUnderlineStyleDoubleAccounting) Then '// 下線なしを設定 ul = xlUnderlineStyleNone End If r.Font.Underline = ul End Sub |
使い方
使い方は上の関数の引数にセル範囲を指定するだけですね。
1 2 3 4 5 6 |
Sub ChangeUnderlineTest() '// A1セルの下線状態を切り替える Call ChangeUnderline(Range("A1")) '// アクティブセルの下線状態を切り替える Call ChangeUnderline(ActiveCell) End Sub |