質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

535閲覧

セルの下部に罫線を入れる

cream_pan

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/10/01 03:22

編集2021/10/01 03:52

VBA初心者なのですが、大量にあるデータを3行ずつ区別して見れるように、罫線を1列目から17列目にあるセルの下部に引きたいです。(5行目から罫線を引き始め、8行目、11行目...と続けて、2列目のセルが空白になるまで引き続けたいです。)

また、罫線を引く作業を3シート分それぞれ繰り返し行うように、以下の様にコードを書きましたが、エラーメッセージは表示されず、処理自体は完了されるのですが、罫線が引かれずに困っています。

初歩的な質問で恐縮ですがどの様に対処すれば良いのかアドバイスいただきたいです。

==================================
Sub 時間ごとに罫線を入れる()

Application.ScreenUpdating = False

Dim i, Rownum As Long
Dim num, k As Integer
Dim ws(3) As Worksheet

Set ws(0) = Worksheets("1-2") Set ws(1) = Worksheets("2-2") Set ws(2) = Worksheets("3-2") For num = 0 To 2 ws(num).Activate Rownum = Cells(Rows.Count, 2).End(xlUp) For i = 5 To Rownum Range(Cells(i, 1), Cells(i, 17)).Borders(xlEdgeBottom).LineStyle = xlContinuous i = i + 3 Next i Next num

Application.ScreenUpdating = True

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Forループ内で i に加算してはいけません。

3行毎に処理したいなら、Step を使います。

vba

1For i = 5 To Rownum Step 3 2 3 '3行毎に実行したい処理 4 5Next

投稿2021/10/01 04:11

hatena19

総合スコア33795

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cream_pan

2021/10/01 04:44

迅速なご対応ありがとうございます!! iを加算する処理 (i = i + 3)の代わりに、 For i = 5 To Rownum Step 3 を書き足して試してみたのですが、依然と同じように罫線が引かれずにエラーなしで処理が終了します。 お手数ですが、他に思い当たる所があればご教授お願い致します。
hatena19

2021/10/01 06:47

Rownum = Cells(Rows.Count, 2).End(xlUp) 上記のコードで型が一致しませんのエラーが出ると思いますが、でませんか。 とりあえず下記に修正したらどうなりますか。 Rownum = Cells(Rows.Count, 2).End(xlUp).Row
cream_pan

2021/10/01 07:23

早速のご回答ありがとうございます! ご指摘のように、End(xlUp)の後に.Rowが抜けていたことが問題でした! 無事罫線が引けました!! 本当にありがとうございました!
hatena19

2021/10/01 07:38

解決済みですが、気になったので、間違いの指摘。 Dim i, Rownum As Long Dim num, k As Integer 上記だと i と num はVariant型になります(エラーにはなりませんが)。数値型にしたいのだと思いますので、面倒でも下記のように一つずつ型指定する必要があります。 Dim i As Long, Rownum As Long Dim num As Integer, k As Integer
cream_pan

2021/10/27 04:41

返信おそくなってしまい申し訳ありません>< ご指摘ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問