[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数シートで、項目ごとに罫線を引きたい VBA』(肩こり)
このような表があるのですが、この中で種別(10.20…)の区切りごとに 横罫線を引くVBAを教えてください。種別はその都度数が変わります。 10がない日もあれば10個くらい入る日もあります。単位は10単位づつで 990くらいまでです。また同じようなシートが続いているので複数シートに 適応したいのであわせてお願いします。
種別 日付 オーダー 納入 品番 履歴 名前 台数 10 20100215 M7974625 AB 152 00 田中 27 10 20100215 M7974626 CD 132 00 鈴木 43 10 20100215 M7974627 AC 145 00 佐藤 54 20 20100215 M7974639 AB 166 00 鈴木 14 20 20100215 M7974640 AB 170 00 斉藤 8 30 20100215 M7974628 AC 166 00 田中 6 30 20100215 M7974629 AD 125 00 田中 53 40 20100215 M7974630 CD 134 00 山田 21 40 20100215 M7974631 CB 156 00 斉藤 13
WindowsXP Excel2003
VBAでも出来ますが条件付書式ではダメですか? A1:H10に上記の表があるとして A1:H10を範囲選択して条件付書式で数式が「=$A1<>$A2」 で罫線で下線を設定で出来ると思います。 (momo)
ちなみに、マクロならこんな感じ
Sub test() Dim i As Long For i = 2 To Range("A1").End(xlDown).Row If Range("A" & i).Value <> Range("A" & i + 1).Value Then Rows(i).Columns("A:H").Borders(xlEdgeBottom).LineStyle = xlContinuous End If Next i End Sub
(momo)
momoさま。ありがとうございます。2つの方法でできました。 ちなみにこのデータはシート2〜8位まで続いているのですが、 マクロで他のシートでも同じように罫線を引く場合を お教え願いたいです。宜しくお願いします。
(肩こり)
そのシートをアクティブにすれば良いのでは?
老婆心ながら・・・
Cells.Borders.LyneStyle = xlNone
は要りませんか・・・?
(ROUGE)
ROUGEさんのご意見を反映したうえでシート2〜8(Index番号ですよね?)でしたら
Sub test() Dim i As Long, s As Long For s = 2 To 8 With Sheets(s) .Cells.Borders.LyneStyle = xlNone For i = 2 To .Range("A1").End(xlDown).Row If .Range("A" & i).Value <> .Range("A" & i + 1).Value Then .Rows(i).Columns("A:H").Borders(xlEdgeBottom).LineStyle = xlContinuous End If Next i End With Next s End Sub
ってな感じでしょうか (momo)
ROUGEさん、momoさんありがとうございます。 .Cells.Borders.LyneStyle = xlNone ここが原因で止まってしまいます。なしにすると 最後まで行くのですが^^; (肩こり)
・・・orz スペルミスです。 LineStyle ~ここが...(><) (ROUGE)
あ・・・つい面倒でコピペさせてもらってチェックしてませんでした すみませ〜ん >< (momo)
罫線を描くシート(2〜8)の中にデータが入っていないシートが ある場合(データがないシートが発生するのはまちまちです) If .Range("A" & i).Value <> .Range("A" & i + 1).Value Then 上記のここで止まってしまうのですが、教えてください。 (肩こり)
これから出張なので未テストですが、たぶんこれで。
Sub test() Dim i As Long, s As Long For s = 2 To 8 With Sheets(s) .Cells.Borders.LineStyle = xlNone For i = 2 To .Range("A1").End(xlDown).Row If .Range("A" & i).Value <> "" And .Range("A" & i + 1).Value <> "" Then If .Range("A" & i).Value <> .Range("A" & i + 1).Value Then .Rows(i).Columns("A:H").Borders(xlEdgeBottom).LineStyle = xlContinuous End If End If Next i End With Next s End Sub
(momo)
こんにちは。 試したのですが、今度はここで↓
If .Range("A" & i).Value <> "" And .Range("A" & i + 1).Value <> "" Then
止まってしまいます。加えて、元のマクロでは 一番下の数値の下にも罫線が引かれたのに対し、 新しいものは、一番下の罫線が引かれなくなって しまいました。宜しくお願いします;; (肩こり)
状況が良くわかりませんが、これで対応できますか? データの無い状況というのがどういう状態なのか不明です。
Sub test() Dim i As Long, s As Long For s = 2 To 8 With Sheets(s) .Cells.Borders.LineStyle = xlNone For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row If .Range("A" & i).Value <> .Range("A" & i + 1).Value Then .Rows(i).Columns("A:H").Borders(xlEdgeBottom).LineStyle = xlContinuous End If Next i End With Next s End Sub
(momo)
momoさんありがとうございます。 データのない状況とは、1番上のデータがシート2〜8まで 入っている場合もあれば、シート3(どのシートかは決まっていない) だけ空白だったりするということです。説明不足で申し訳ありませんm(_ _)m
一番下の罫線も含め希望通りになりました。 ありがとうございました。
(肩こり)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.