- ベストアンサー
非表示行のあるシートにexcel マクロで罫線
任意に非表示行が含まれているワークシートがあります。 これに罫線を引くのですが、表示行で5行ごとに太い横線にしたいと思います。 含まれる非表示行数によって太線の入る位置が変わってきます。 これをマクロで行うにはどのようにしたらよいのでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
行が非表示状態かどうかは 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
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
手抜きで、要点だけ。あとは修正のこと。 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
お礼
お礼の仕方がよくわからず遅れてしまいました。 ありがとうございました。