プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

えっとぉ、まずはどんな風にデータが入っているのか教えてください。



たとえば・・・
(1)A1とA2:D15が基本でD15がD30になることもあるとか
(2)A1:D1、A5:D7と、飛び飛びでデータが入っているのを1つの表として罫線を引きたい
とかです。

とりあえず、これにお答えいただいたほうが適切な方法があるかも。。。

この回答への補足

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

補足日時:2004/04/18 10:03
    • good
    • 0

飛び飛びでも好いからデータの入っている、一番下行且つ一番右列まで(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
    • good
    • 0

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