こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

非表示行のあるシートにexcel マクロで罫線

任意に非表示行が含まれているワークシートがあります。
これに罫線を引くのですが、表示行で5行ごとに太い横線にしたいと思います。
含まれる非表示行数によって太線の入る位置が変わってきます。

これをマクロで行うにはどのようにしたらよいのでしょうか。

投稿日時 - 2018-04-30 15:16:01

QNo.9493715

困ってます

質問者が選んだベストアンサー

行が非表示状態かどうかは
rows(行番号).Hidden で判断できますので
表示状態の行を1行目から順番に数え
その行数が5の整数倍かどうかで制御を分ければいいと思います。

以下の例は、2列目と3列目に罫線を引いています。
Set MyRange = Range(.Cells(wkFullCount, 2), .Cells(wkFullCount, 3))
↑の2,3がその意味です。

Sub sample()

 Dim wkShowlCount As Long
 Dim wkFullCount As Long
 Dim MyRange As Range

 With ThisWorkbook.Sheets(1)
  wkFullCount = 0
  wkShowlCount = 0
  Do
   wkFullCount = wkFullCount + 1
   If .Rows(wkFullCount).Hidden = False Then
    wkShowlCount = wkShowlCount + 1
   End If
    
   '以下罫線を引く
   Set MyRange = Range(.Cells(wkFullCount, 2), .Cells(wkFullCount, 3))
   With MyRange.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ColorIndex = xlAutomatic
    .TintAndShade = 0
    If wkShowlCount Mod 5 = 0 Then '5の整数倍の行なら太線
     .Weight = xlMedium
    Else
     .Weight = xlThin
    End If
   End With
    
  If wkFullCount > 1000 Then Exit Sub  '1000行までが対象
  Loop
 End With
End Sub

投稿日時 - 2018-04-30 18:25:39

お礼

お礼の仕方がよくわからず遅れてしまいました。
ありがとうございました。

投稿日時 - 2019-07-04 09:41:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

手抜きで、要点だけ。あとは修正のこと。
A列に仮に連番を振っておく。確認用。
非表示にする前の行数は40にした。自動検出にしてない。勉強して。
見た目で5行ごとにセルに下線を引く。
線種は、指定の太線にしてない。勉強して。
表の最下セル当たりの最終の下線は、質問に書いてないので、ほったらかし。
全行を上から総なめして、非表示をチェックしてるだけの、能のないやり方ですが。
Msgboxの行は最終では削除。
行の非表示は、ホームー(セルの)書式表示設定で非表示してテスト。
ーー
標準モジュールに
Sub test01()
'セルの下線を一旦消去
Range("A1:D100").Select
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
'--
For i = 1 To 40
If ActiveSheet.Rows(i).Hidden = True Then
MsgBox i
Else
k = k + 1
If k Mod 5 = 0 Then
Range(Cells(i, "a"), Cells(i, "d")).Borders(xlEdgeBottom).LineStyle = xlContinuous
End If
End If
Next
End Sub

投稿日時 - 2018-04-30 18:21:23

あなたにオススメの質問