見栄えをよくするために表範囲に格子状に罫線を指定する場合があります。
そこから、値が同一のセルの罫線を消す/文字を見せないようにして、見栄えよくしたい場合があります。
イメージ
| aaa | 111 | あああ | aaa | 111 | あああ | |
| aaa | 111 | いいい | いいい | |||
| bbb | 222 | あああ | → | bbb | 222 | あああ |
| bbb | 333 | いいい | いいい | |||
| bbb | 333 | ううう | ううう |
表範囲の一つ上のセルが同一値の場合、見栄えをよくするコード
パーツ化しているため、コピペで対応可能です。
'■一つ上のセルが同一の値の場合、結合セルぽく見せる(見栄えよく見せる/罫線/文字同色で見せない)
Public Function Call_BordersCreate(ws As Worksheet, rng As Range)
Dim eRow As Long: eRow = Call_CurrentLastRowWS(rng, ws)
Dim eCol As Long: eCol = Call_CurrentLastColWS(rng, ws)
'■罫線を格子状に引く
rng.CurrentRegion.Borders.LineStyle = xlContinuous
Dim r As Long, c As Long
For r = rng.Row To eRow - 1
For c = rng.Column To eCol
'■現在のセルの1行下が同じ値なら罫線を外す/背景色→文字色にする
If ws.Cells(r, c) = ws.Cells(r + 1, c) Then
ws.Cells(r + 1, c).Borders(xlEdgeTop).LineStyle = xlNone
ws.Cells(r + 1, c).Font.Color = ws.Cells(r + 1, c).Interior.Color
End If
Next
Next
End Function
実際の使い方
Public Sub sample()
Call Call_BordersCreate(ActiveSheet, Range("B2")) 'B2セルを含む表範囲の見栄えをよくする
End Sub
注意点
- 上記のみでは動作しません。Call_CurrentLastRowWSとCall_CurrentLastColWSもコピペください。
- 値が同一だった場合の処理です。空白が入っている場合はこちら。



コメント