• 締切済み

罫線を引く

Excelで表を作っているのですが、マクロで罫線を引きたいのです。しかし、マクロを実行して、データがない部分(データのない列)には罫線を引きたくないのです。range()で設定すると設定した範囲で罫線が引けるのはわかるのですが、データの量が毎回違うので、うまくいきません。 データがない列に、罫線を引かなくていいようにするには、どういう風にしたらよいのですか?VBAに詳しい方、教えて下さい。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

飛び飛びでも好いからデータの入っている、一番下行且つ一番右列まで(A1セルからのセル範囲)に(桝目状に)罫線を引きます。 式のセットされているセルも、データありと同じ扱いになります。 Range("A1").Select のところは、見だしや左余白の関係で、左上隅を指定するものですが、B2など適当に指定してください。 Set c = Selection.SpecialCells(xlCellTypeLastCell) のところも、合計欄などのために、1行下まで罫線を引きたいなら Set c = Selection.SpecialCells(xlCellTypeLastCell).Offset(1, 0) として下さい。 '---以下は桝目罫線を引くルーチンですがマクロの記録そのものの平板なものです。適当に色や太さなどしたいように変えてください。 この回答のポイントはSpecialCellsの利用です。 Sub test01() Dim c As Range Range("A1").Select Set c = Selection.SpecialCells(xlCellTypeLastCell) Range(Cells(1, "A"), c).Select '---- Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub

  • emico
  • ベストアンサー率30% (39/129)
回答No.1

えっとぉ、まずはどんな風にデータが入っているのか教えてください。 たとえば・・・ (1)A1とA2:D15が基本でD15がD30になることもあるとか (2)A1:D1、A5:D7と、飛び飛びでデータが入っているのを1つの表として罫線を引きたい とかです。 とりあえず、これにお答えいただいたほうが適切な方法があるかも。。。

defineme
質問者

補足

はい。例えば、A1~G1はいつも固定で、データがA15~G15 時にはA17~G17、A25~G25と横に対しては固定で、縦に対しては一定ではないのです。ちょっと、説明の仕方がへたですいません。

関連するQ&A