プロが教えるわが家の防犯対策術!

ある表に区切りをつける為、セルをマウスで選択後
以下のマクロで罫線を引くことを考えてます。

Sub 選択範囲に二重線を引く()
'二重線で内部に罫線
Selection.Borders(xlEdgeBottom).LineStyle = xlDouble
End Sub

が、いちいち範囲選択しなくても「引きたい行を選択するだけで
A列からT列まで引くにはどうしたらよいのでしょうか?
ご教授願います。

A 回答 (3件)

No2です。



>実行すると、「応答なし」でフリーズしてしまいます。
列全体(=全行)や全セルを選択して実行していたりしませんか?
その場合は、時間がメッチャかかります。(フリーズのように見える)
(シートには100万行以上あったと思いますので・・)

ご提示のコードが単純なものだったので、あまり複雑にならないようにしたのが仇になったのかも。
以下、重複処理を省くようにし、範囲の制限(1000行目迄)を付して書き直しました。
(1000行目以上でも処理が必要な場合は、セル範囲を修正してください。A1:T1000)

Dim c As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each c In Intersect(Range("A1:T1000"), Selection.Cells.EntireRow).Rows
c.Borders(xlEdgeBottom).LineStyle = xlDouble
Next c
    • good
    • 1
この回答へのお礼

すべて解決です。
大変お世話になりました。ありがとうございました。

お礼日時:2022/06/08 15:39

No1です。



>因みに複数行選択の場合を教えて頂ければ嬉しいです。
選択セルの全ての行に対してA:T列に枠線を引くということで良いでしょうか?

重複して処理するかもなので、少々要領は悪いですけれど、以下ではいかがでしょうか?
ごく簡単な、「セル範囲」であることのチェックも加えてあります。

Dim c As Range
If TypeName(Selection) <> "Range" Then Exit Sub
For Each c In Selection.Cells
Cells(c.Row, 1).Resize(, 20).Borders(xlEdgeBottom).LineStyle = xlDouble
Next c
    • good
    • 0
この回答へのお礼

ありがとうございました。

実行すると、「応答なし」でフリーズしてしまいます。
よろしくお願いいたします。

お礼日時:2022/06/08 14:06

こんにちは



複数セルが選択状態の場合に、どうするのか不明ですけれど・・

左上のセルがある行としてもよいのなら、
Cells(Selection.Row, 1).Resize(, 20).Borders(xlEdgeBottom).LineStyle = xlDouble

※ セルでないものを選択して実行するとエラーが発生します。
    • good
    • 1
この回答へのお礼

早々、ご回答ありがとうございました。
複数セルは考えておりませんでした。
因みに複数行選択の場合を教えて頂ければ嬉しいです。

お礼日時:2022/06/08 12:55

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