サンプルコードでできること
セルの上下左右の罫線の太さを表示します。
カーソルを置いた単一セルを想定していたのですが、複数セルでも動作します。
ただ下図のように、どこのセルの線幅か分かりづらいです。
コードの説明
If Selection.Information(wdWithInTable) = False Then MsgBox "表外にカーソルがあります。" Exit Sub End If
カーソルが表外にあるとき、メッセージを表示して終了します。
For Each cel In Selection.Cells If cel.Borders(wdBorderTop).LineStyle = wdLineStyleNone Then '省略 Else '省略 End If '省略 Next
選択したセルごとに、上、下、左、右の順に線の太さを確認して、変数に線幅を格納します。
haba = getLineWidth(cel.Borders(wdBorderTop).LineWidth)
「cel.Borders(wdBorderTop).LineWidth」で線の幅を取得します。
0.5ptの場合、取得する値は「0.5」ではなく「4」です。
このまま表示しても、線幅はいったい何ptなのかわかりません。
getLineWidthは数値が何ptに該当するのか、調べるためのFunctionプロシージャです。別のプロシージャに分けた理由は、4回記述が必要で冗長なコードになるためです。
Function getLineWidth(celLineWidth As Long) As String '省略 Select Case celLineWidth Case 2 haba = "0.25pt" Case 4 haba = "0.5pt" '省略 End Select '省略 End Function
Select Case構文を用いて、LineWidthプロパティで取得した値ごとに、線幅を変数habaに格納します。
Sub getCellLineWidth() '選択セルの罫線の太さを表示します。 Dim cel As Cell, msg As String, haba As String If Selection.Information(wdWithInTable) = False Then MsgBox "表外にカーソルがあります。" Exit Sub End If For Each cel In Selection.Cells If cel.Borders(wdBorderTop).LineStyle = wdLineStyleNone Then msg = msg & "上:" & "罫線なし" & vbCrLf Else haba = getLineWidth(cel.Borders(wdBorderTop).LineWidth) msg = msg & "上:" & haba & vbCrLf End If If cel.Borders(wdBorderBottom).LineStyle = wdLineStyleNone Then msg = msg & "下:" & "罫線なし" & vbCrLf Else haba = getLineWidth(cel.Borders(wdBorderBottom).LineWidth) msg = msg & "下:" & haba & vbCrLf End If If cel.Borders(wdBorderLeft).LineStyle = wdLineStyleNone Then msg = msg & "左:" & "罫線なし" & vbCrLf Else haba = getLineWidth(cel.Borders(wdBorderLeft).LineWidth) msg = msg & "左:" & haba & vbCrLf End If If cel.Borders(wdBorderRight).LineStyle = wdLineStyleNone Then msg = msg & "右:" & "罫線なし" & vbCrLf Else haba = getLineWidth(cel.Borders(wdBorderRight).LineWidth) msg = msg & "右:" & haba & vbCrLf End If msg = msg & vbCrLf Next MsgBox msg, Title:="罫線の幅" End Sub Function getLineWidth(celLineWidth As Long) As String 'WdLineWidthのメンバーの値を受け取り、線の幅を返します。 '(wdLineWidth025ptの値「2」を受け取ると「0.25pt」を返す。) Dim haba As String Select Case celLineWidth Case 2 haba = "0.25pt" Case 4 haba = "0.5pt" Case 6 haba = "0.75pt" Case 8 haba = "1pt" Case 12 haba = "1.5pt" Case 18 haba = "2.25pt" Case 24 haba = "3pt" Case 36 haba = "4.5pt" End Select getLineWidth = haba End Function