実現したいこと
VBAにて、csvから情報を読み込んで、それを表に加工するマクロをつくっています。
その中で画像のように、分類1の変わり目に罫線を引きたいと考えています。
その実現のため現在のマクロは
・forループでA列を上から順番に検査
・各列を一つ上の値を比較して、値が異なれば(分類1の変わり目)UnionメソッドてRange変数に格納
・ループ終了後にUnionでまとめたRange全体にborderプロパティで罫線を引く(xlEdgeTop)
という挙動をさせ、罫線の処理を一度にまとめています。
Excelのバージョンは2019です。
VBA
1 srw = 6 'テーブルの始まり 2 urw = 19 '表の終わり 3 'ubo = 罫線を引きたいRange 4 For rw = srw To urw 5 6 '分類の変わり目に横線 7 If Cells(rw, 1) <> Cells(rw - 1, 1) Then 8 If ubo Is Nothing Then 9 Set ubo = Range(Cells(rw, 1), Cells(rw, 3)) 10 Else 11 Set ubo = Union(ubo, Range(Cells(rw, 1), Cells(rw, 3))) 12 End If 13 End If 14 15 Next 16 17 Set ubo = Union(ubo, Range(Cells(urw + 1, 1), Cells(urw + 1, 3))) 18 ubo.Borders(xlEdgeTop).LineStyle = xlContinuous 19
現状
実際にマクロを動かすと、画像のようになってしまいます。
どうやら、分類D以降の変わり目が連続してしまっているために、Unionで別々に指定してもひとまとまりの範囲と捉えられてしまっているようです。
Unionのこのような使い方が一般的でないのか、調べても対処法や代替手段が出てきません。
もちろんいざとなればUnionを使わず、ループで各行に直接罫線を引いていけばいいのは重々承知なのですが、できれば罫線を引く処理は一度にまとめてしまいたいです。
もしもこのような処理を実現するやり方があれば、是非ご教授いただきたいです。
よろしくお願い致します。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/22 07:11