お世話になります。
マクロでA列からU列まで罫線を引いています。
行の指定は8行目から任意の最終行までで、
今のところ最下段のコードで罫線を引いております。
VBA上級者の方ならお気づきだと思いますが、
1列づつ8行目から最終行まで取得する方法はわかるのですが、
この形式でA列からU列まで指定するコードの書き方がわかりません。
実用上このコードでも問題ないのですが、
もっと能率よくコードを書く方法があると思います。
なので、すいませんが、詳しい方、説明の上手な方、
コードで直接説明出来る方、
8行目から任意の最終行までで、かつ、A列からU列まで罫線を引くための
効率の良いコードの書き方を教えて下さい。
お手数ですがよろしくお願いします。
---------------------------------------------
Sub 罫線を引く()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
For i = 8 To n
Cells(i, "A").Borders.LineStyle = True
Cells(i, "B").Borders.LineStyle = True
Cells(i, "C").Borders.LineStyle = True
Cells(i, "D").Borders.LineStyle = True
Cells(i, "E").Borders.LineStyle = True
Cells(i, "F").Borders.LineStyle = True
Cells(i, "G").Borders.LineStyle = True
Cells(i, "H").Borders.LineStyle = True
Cells(i, "I").Borders.LineStyle = True
Cells(i, "J").Borders.LineStyle = True
Cells(i, "K").Borders.LineStyle = True
Cells(i, "L").Borders.LineStyle = True
Cells(i, "M").Borders.LineStyle = True
Cells(i, "N").Borders.LineStyle = True
Cells(i, "O").Borders.LineStyle = True
Cells(i, "P").Borders.LineStyle = True
Cells(i, "Q").Borders.LineStyle = True
Cells(i, "R").Borders.LineStyle = True
Cells(i, "S").Borders.LineStyle = True
Cells(i, "T").Borders.LineStyle = True
Cells(i, "U").Borders.LineStyle = True
Next i
End Sub
No.2ベストアンサー
- 回答日時:
こんにちは
すでに回答は出ていますが、手作業と同じように対象セル全体をまとめて選択しておいて罫線を引けば良いということはご存知と思います。
変数nの行までの範囲を取得する方法としては、ANo1様が回答されている方法以外にも、
'左上と右下のセルで範囲を指定
Range(Cells(8, 1), Cells(n, 21))
'最初の1行の範囲を必要な行数分に拡張
Range("A8:U8").Resize(n - 7)
'左上のセルから必要な行・列数分に拡張
Range("A8").Resize(n - 7, 21)
などでも、同じセル範囲を取得することが可能です。
個人的には最後のものが利用しやすいと感じています。
ご参考まで。
ご解答ありがとうございます。
いろいろ解答して頂きありがとうございます。
僕の感覚では最初のものがわかりやすいです。
2番目のものは
とりあえずA8からU8までを選択範囲として決めてしまい、
そこからn行までリサイズして行くということですよね。
この方法の要点は、そのままリサイズすると
最終行(n行)はいいとして、最初の行が1行目から始まってしまうため、
「-7」で、1行目から7行目までを削除するというところが
この方法の要点ですよね。
3番目も同様で、左上のA8はいいとして、
右下を指定したときに最初の7行を削除するというのが
この考え方のコツですよね。
僕が最初のものがわかりやすい理由が、このあたりで、
1行目から7行目まで削除する必要がない
というところが理解しやすいです。
最初と2番目のコードを全部書くと以下の通りですよね。
今回はご解答ありがとうございます。
機会がありましたら、またお願いします。
追記
No1さんのお礼にも書きましたが、上級者のみなさんって
ほとんど省略して説明するんですね。
ちょっとびっくりしました。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub 罫線を引くNo2_1()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
For i = 8 To n
Range(Cells(8, 1), Cells(n, 21)).Borders.LineStyle = True
Next i
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub 罫線を引くNo2_2()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
For i = 8 To n
Range("A8:U8").Resize(n - 7).Borders.LineStyle = True
Next i
End Sub
No.5
- 回答日時:
ANo2です。
少しだけ勘違いをなさっているようですので、締め切られる前に……
ANo1、2のお礼の欄に、Forループを用いたコードを書いていらっしゃいますが、両方ともループする必要はありません。
なぜなら対象になるセルを全て指定しているからで、その範囲に罫線を一度設定すれば、全部に引けることになるからです。
ちなみに、ANo3様のご提示は、最終行を求める処理も含めて1行のコードにまとめた記述の例になっています。
言わずもがなではありますが、ご参考までに。
ご解答ありがとうございます。
ご指摘して頂いてびっくりしました。
おっしゃる通り、For~Next i でループになっているんですよね。
仕事の必要上、とにかく早く作りたいので、
みなさんに教えて頂いたコードを切り貼りして
その場しのぎをしてきましたので、気が付きませんでした。
やっと最近、基礎的な勉強を始めて
頂いたコードの内容を理解できるようになったところですので、
本当に参考になりました。
おっしゃることは以下の通りなんですよね。
いつもご解答して頂きありがとうございます。
機会がありましたらまたお願いします。
------------------------------------------
Sub 罫線を引くNo1()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
Range("A8:U" & n).Borders.LineStyle = True
End Sub
------------------------------------------
Sub 罫線を引くNo2_1()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
Range(Cells(8, 1), Cells(n, 21)).Borders.LineStyle = True
End Sub
------------------------------------------
Sub 罫線を引くNo2_2()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
Range("A8:U8").Resize(n - 7).Borders.LineStyle = True
End Sub
No.4
- 回答日時:
こんにちは!
すでに回答は出ていますので、参考程度で・・・
Sub Sample1()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 7 Then
Range(Cells(8, "A"), Cells(lastRow, "U")).Borders.LineStyle = xlContinuous
End If
End Sub
でも大丈夫だと思います。m(_ _)m
ご解答ありがとうございます。
考え方としてはNO.2さんと同様に
左上と右下で考えるんですよね。
この場合は
左上=(Cells(8, "A"),
右下=Cells(lastRow, "U")
ということですよね。
このコードの場合、「最終行が1行目から7行目までには入らない」ので、
そうなったときの対策を講じる必要があり
「If lastRow > 7 Then」 がそうですよね。
参考になりました。
今回はご解答ありがとうございます。
機会がありましたらまたお願いします。
追記
サブプロシージャーから全文を掲載して頂きありがとうございます。
No.3
- 回答日時:
全部まとめるとこう?
Range(Cells(Rows.Count, "A").End(xlUp),range("U8")).Borders.LineStyle = True
ご解答ありがとうございます。
お礼が遅くなりすいません。
最初、見たみた時は意味がわからなかったのですが、、、。
よく見ると、1行にまとめていて、、、しかもU列が8行目から始まるので、
8行目からのスタートに対して後から削除したり
エラー対策をする必要がないってことですよね。
すごくよく考えられていますよね。
※コードは以下のとおりなんですよね。
今回はご解答ありがとうございます。機会がありましたらまたお願いします。
---------------------------------------------
Sub 罫線を引くNo3()
Range(Cells(Rows.Count, "A").End(xlUp), Range("U8")).Borders.LineStyle = True
End Sub
No.1
- 回答日時:
Set Sh = ActiveSheet
Sh.Range("A8:U" & n).Borders.LineStyle = True
ご解答ありがとうございます。
シンプルなコードですが、
これで機能するんですね。
ご解答頂いたコードは以下のとおりですよね。
※今回はアクティブシート限定なので変数は省いています。
今回はご解答ありがとうございます。
機会がありましたらまたお願いします。
追記
上級者の人って、返答するときに
こんなに省いて要所だけで説明するんですね。
ちょっとびっくりしました。
------------------------
Sub 罫線を引くNO1()
n = Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行まで
For i = 8 To n
Range("A8:U" & n).Borders.LineStyle = True
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの外枠太罫線を2~3倍さ...
-
パワーポイントで、表の一部を...
-
EXCELで、下線の太さを変...
-
excel2003 罫線だけを保護したい
-
罫線が引かれているセルの個数...
-
Excelの条件付き書式設定の太い...
-
【エクセル】謎の枠線の消し方
-
罫線の色を薄くしたい
-
エクセルでデータがある部分だ...
-
エクセル 罫線入りの文字 文...
-
Excelでアンダーラインに文字が...
-
エクセル 入力されていない線...
-
エクセルのアンダーラインについて
-
エクセル の縦線
-
エクセル
-
エクセルの囲み線の太さを変え...
-
勝手に背景に色が付いて困っ...
-
エクセルで選択範囲以外に色を...
-
罫線の色をまとめて変更する
-
エクセルで罫線も一緒に並び替...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
Excelの外枠太罫線を2~3倍さ...
-
excel2003 罫線だけを保護したい
-
EXCELで、下線の太さを変...
-
罫線の色を薄くしたい
-
【エクセル】謎の枠線の消し方
-
エクセルで文字を入力すると罫...
-
エクセルのアンダーラインについて
-
エクセル
-
決まった罫線のなかで、文章入...
-
エクセルで罫線も一緒に並び替...
-
パワーポイントで、表の一部を...
-
エクセル 罫線入りの文字 文...
-
勝手に背景に色が付いて困っ...
-
罫線が引かれているセルの個数...
-
EXCELのオートフィルタで罫線が...
-
エクセル 入力されていない線...
-
罫線の色をまとめて変更する
-
エクセル表の罫線(縦)が消せ...
-
Excelでアンダーラインに文字が...
おすすめ情報
みなさんご解答ありがとうございます。
急に多忙になったので夜以降にゆっくり読ませて頂きます。
すいませんがお礼や補足が遅れると思いますが、
ちゃんと読みますのでしばらくお待ちください。
いつもご解答ありがとうございます。