dポイントプレゼントキャンペーン実施中!

いつもお世話になっております
オートフィルタで抽出結果に
罫線をひきたのですが、
うまくいきません。
表の中の線はhairline
外枠はcontinuous

下記のコードはフィルタが
ない状態ではうまくいきますが、
フィルタがかかっている
状態だと
添付ファイルのように
黄色い部分に実線が入ってしまいます。

わかる方おしえてくれませんでしょうか

Sub linex()
With Range("A1").CurrentRegion
.BorderAround LineStyle:=xlContinuous

With .Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlHairline
End With

With .Borders(xlInsideHorizontal)
.LineStyle = xcontinuous
.Weight = xlHairline
End With

End With
End Sub

「オートフィルタで抽出結果に 罫線をひく方」の質問画像

A 回答 (1件)

こんにちは



回答の前に・・
>表の中の線はhairline
>外枠はcontinuous
xlHairlineは線の太さを、xlContinuousは線のスタイル(実線、破線、二重線など)を表しているので、意味が違うのではないでしょうか?

 線の種類は、両方とも xlContinuous
 太さは、外枠が xlMedium、それ以外は xlHairline
と勝手に解釈しました。

その上で・・
フィルタをかけた状態だと、実際にはいくつかのセル範囲に分割されているので、BorderAround で指定すると、それぞれのセル範囲での外枠と解釈される結果、ご質問のような事象になっているものと思います。
ですので、「見た目上の外枠」にするには、個別に指定してあげるしかなさそうですね。
(以下では、非表示の「列」は無いものと仮定しています)

Sub linex()
With Range("A1").CurrentRegion
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlHairline
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium

With .SpecialCells(xlCellTypeVisible)
.Areas(1).Borders(xlEdgeTop).Weight = xlMedium
.Areas(.Areas.Count).Borders(xlEdgeBottom).Weight = xlMedium
End With
End With
End Sub
    • good
    • 0
この回答へのお礼

いつもお世話になっております
ご返信遅れてすみません
うまくいきました。
ありがとうございました。

お礼日時:2022/07/13 15:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています