LineStyleとWeightは組み合わせ不可のパターンが多い
セルの罫線を設定する際に、罫線の種類のLineStyleプロパティと線の太さのWeightプロパティを組み合わせて表現します。
LineStyleは8種類、Weightは4種類あるため、32パターンの組み合わせがありますが、実際には14パターンしか利用できません。私がこれを知ったときは「少なっ」と思いました。なんでこんな制限があるのでしょうね。
これは回避しようがありませんので、組み合わせが問題ないか確認してコーディングするしかありません。
組み合わせ不可のパターンの場合に、LineStyleとWeightを両方設定した場合は、より後で設定した方が有効になります。
組み合わせの確認
以下のコードはLineStyle(8種類)とWeight(4種類)の組み合わせの罫線を表示します。組み合わせが正しく設定されなかった個所は黄色を設定しています。
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 |
Sub LineStyleWeightCheck() Dim ls() Dim wt() Dim iRow Dim iCol Dim bs As Borders Dim r As Range ls = Array(xlContinuous, xlDash, xlDashDot, xlDashDotDot, xlDot, xlDouble, xlLineStyleNone, xlSlantDashDot) wt = Array(xlHairline, xlThin, xlMedium, xlThick) Range("B2").Select For iRow = 0 To UBound(ls) * 2 Step 2 For iCol = 0 To UBound(wt) * 2 Step 2 Set r = ActiveCell.Offset(iRow, iCol) Set bs = r.Borders bs.Weight = wt(iCol / 2) bs.LineStyle = ls(iRow / 2) If (bs.LineStyle <> ls(iRow / 2)) Or (bs.Weight <> wt(iCol / 2)) Then r.Interior.ColorIndex = 6 End If Next Next End Sub |
実行結果
上のコードを実行するとこのようになります。
xlContinuous以外の線は太さが1種類または2種類に限定されていることが分かります。
上のコードではWeight→LineStyleの順に設定しているため、黄色の個所はLineStyleのみが設定された状態になっています。
組み合わせパターンの整理
組み合わせのパターンを整理すると以下のようになります。
線の種類 | 極細 xlHairline |
細 xlThin |
中 xlMedium |
太 xlThick |
---|---|---|---|---|
細い実線(xlContinuous) | ○ | ○ | ○ | ○ |
破線(xlDash) | × | ○ | ○ | × |
一点鎖線(xlDashDot) | × | ○ | ○ | × |
二点鎖線(xlDashDotDot) | × | ○ | ○ | × |
点線(xlDot) | × | ○ | × | × |
二重線(xlDouble) | × | × | × | ○ |
なし(xlLineStyleNone) | × | ※後述 | × | × |
斜め斜線(xlSlantDashDot) | × | × | ○ | × |
※LineStyle=なし、Weight=xlThinの組み合わせは、先にWeight = xlThin、次にLineStyle = xlLineStyleNone、と設定すると正しく設定されますが、先にLineStyleを設定すると細い実線が表示されてしまいます。