• ベストアンサー

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

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

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.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

ryou4649
質問者

お礼

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

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.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

関連するQ&A