
Excel 2002でvbaを用いて、下記の表に対してマクロを組もうとしています。
例)
101 a 500円
129 b 600円
120 b 1000円
120 a 700円
138 b 900円
これをオートフィルを用いて、B列のbだけを抽出するとします。
その状態で表に罫線を引きたいのです。
罫線は、表の中の縦横線は点線、周囲だけ実線というものにしたいです。
そこで下のようなマクロを組んでみました。
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
With Selection.Borders(xlInsideHorizontal)
.Color = vbBlack
.LineStyle = xlDash
.Weight = xlHairline
End With '横点線
With Selection.Borders(xlInsideVertical)
.Color = vbBlack
.LineStyle = xlDash
.Weight = xlHairline
End With '縦点線
With Selection.Borders(xlEdgeBottom)
.Color = vbBlack
.LineStyle = xlContinuous
.Weight = xlThin
End With '周囲の下線
(→ここから他3方向への線もひきますが省略します)
こうすると、オートフィル化する前は理想通りの形になったのですが、オートフィル化するとうまくいきません。
120 b 600円
120 b 1000円
(↑↓この間にaセルが入っているため、↑の線が実線となってしまいます)
138 b 900円
オートフィル化した後でも、どうにかならないものなのでしょうか?
また、この表の行数やa、bの個数は日によって異なるため、最終行を指定するということも出来そうにありません。
また、今A列に101、10a…などといった数字が並んでおりますが、この数字が変化する境目のところにのみ太線を引く、ということは出来ますか?
例)
120 b 600円
120 b 1000円
(↑↓この間に太線を挿入したい)
138 b 900円
太線はA列からC列まで引きたいです。
こういったこともvbaでどうにかなるものなのでしょうか?
どなたかお教え頂けると非常に助かります。宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
ごめんなさい。
A列の数字が変化する境目は「太線」でしたね。
訂正します。
また、Sheet2を選択して実行した場合はエラー表示するようにしました。
Sub test()
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim myRng1 As Range, myRng2 As Range, c As Range
Dim myLastRow As Long
Set Ws1 = ActiveSheet
Set Ws2 = Worksheets("Sheet2")
Set myRng1 = Ws1.Range("A1").CurrentRegion. _
SpecialCells(xlCellTypeVisible)
If Ws1.Name = Ws2.Name Then
MsgBox "データシートを選択してから実行してください"
Exit Sub
End If
Ws2.Cells.Clear
myRng1.Copy Ws2.Range("A1")
Set myRng2 = Ws2.Range("A1").CurrentRegion
myRng2.ClearFormats
With myRng2
With .Borders(xlInsideHorizontal)
.Color = vbBlack
.LineStyle = xlDash
.Weight = xlHairline
End With '横点線
With .Borders(xlInsideVertical)
.Color = vbBlack
.LineStyle = xlDash
.Weight = xlHairline
End With '縦点線
With .Borders(xlEdgeBottom)
.Color = vbBlack
.LineStyle = xlContinuous
.Weight = xlThin
End With '周囲の下線
End With
For Each c In myRng2.Resize(, 1)
If c.Offset(1).Value = "" Then Exit For
If c.Value <> c.Offset(1).Value Then
With c.Resize(, myRng2.Columns.Count).Borders(xlEdgeBottom)
.Color = vbBlack
.LineStyle = xlContinuous
.Weight = xlThick
End With
End If
Next c
Ws2.Activate
Set Ws1 = Nothing
Set Ws2 = Nothing
Set myRng1 = Nothing
Set myRng2 = Nothing
End Sub
No.1
- 回答日時:
こんばんは。
Sheet2 に 結果を出力するように作ってみました。
Sheet2をあらかじめ用意してください。未記入シートで結構です。
罫線を引きたいシートを表示して以下のVBAを実行してみてください。
Sheet2に結果が表示されます。
Sub test()
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim myRng1 As Range, myRng2 As Range, c As Range
Dim myLastRow As Long
Set Ws1 = ActiveSheet
Set Ws2 = Worksheets("Sheet2")
Set myRng1 = Ws1.Range("A1").CurrentRegion. _
SpecialCells(xlCellTypeVisible)
Ws2.Cells.Clear
myRng1.Copy Ws2.Range("A1")
Set myRng2 = Ws2.Range("A1").CurrentRegion
myRng2.ClearFormats
With myRng2
With .Borders(xlInsideHorizontal)
.Color = vbBlack
.LineStyle = xlDash
.Weight = xlHairline
End With '横点線
With .Borders(xlInsideVertical)
.Color = vbBlack
.LineStyle = xlDash
.Weight = xlHairline
End With '縦点線
With .Borders(xlEdgeBottom)
.Color = vbBlack
.LineStyle = xlContinuous
.Weight = xlThin
End With '周囲の下線
End With
For Each c In myRng2.Resize(, 1)
If c.Value <> c.Offset(1).Value Then
With c.Resize(, myRng2.Columns.Count).Borders(xlEdgeBottom)
.Color = vbBlack
.LineStyle = xlContinuous
.Weight = xlThin
End With
End If
Next c
Ws2.Activate
Set Ws1 = Nothing
Set Ws2 = Nothing
Set myRng1 = Nothing
Set myRng2 = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) オートフィルタで抽出結果に 罫線をひく方法 1 2022/07/13 13:08
- Visual Basic(VBA) VBA 罫線について B列3行目から21行毎にデータがはいります。 データがはいったらデータが入った 6 2022/11/15 17:22
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
【エクセル】謎の枠線の消し方
-
Excelの外枠太罫線を2~3倍さ...
-
罫線が引かれているセルの個数...
-
EXCELで、下線の太さを変...
-
エクセル 入力されていない線...
-
エクセルのアンダーラインについて
-
エクセル
-
excel2003 罫線だけを保護したい
-
罫線の色を薄くしたい
-
エクセルで文字を入力すると罫...
-
エクセル の縦線
-
罫線の色をまとめて変更する
-
Wordで表のセル幅を超えたら次...
-
WORDで点線が実線に変換されて...
-
エクセルで罫線も一緒に並び替...
-
勝手に背景に色が付いて困っ...
-
EXCELのオートフィルタで罫線が...
-
ワードでの罫線の改行につい
-
OpenOfficeのCalcで罫線の削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excel2003 罫線だけを保護したい
-
Excelの外枠太罫線を2~3倍さ...
-
Excelの条件付き書式設定の太い...
-
【エクセル】謎の枠線の消し方
-
罫線の色を薄くしたい
-
EXCELで、下線の太さを変...
-
エクセル 入力されていない線...
-
エクセルで文字を入力すると罫...
-
エクセル の縦線
-
エクセル
-
決まった罫線のなかで、文章入...
-
エクセルで罫線も一緒に並び替...
-
エクセルのアンダーラインについて
-
Vba セルの4辺について罫線が有...
-
EXCELのオートフィルタで罫線が...
-
パワーポイントで、表の一部を...
-
エクセル表の罫線(縦)が消せ...
-
罫線が引かれているセルの個数...
-
図形の挿入でコネクタ:カギ線...
-
Wordで表のセル幅を超えたら次...
おすすめ情報