
※先日似たような質問をしたのですが、少し条件が変わったらうまくまとめられなくて、
改めて質問させて頂きます。
マクロの記録で罫線を引く様子を記録したら以下の様になりました。
やりたかったことは、
・表全体の罫線を、実線で囲み、縦も実線、横は細い線
・表の1行目の下部だけ、実線
記録の結果はこんなに長くなってしましましたが、
短くまとめられますでしょうか?
行数は可変するので一番下までという事で、
「n = Application.Max(Cells(Rows.Count, 2).End(xlUp).Row, 2) - 2」と、
「With Range("A3:D3").Resize(n).Borders」なのかなと思ってますが、
まだ応用できません・・・
---------- マクロの記録 ----------
Sub Macro1()
Range("A3:D13").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlHairline
End With
Range("A3:D3").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = xlAutomatic
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("A3").Select
End Sub
No.2ベストアンサー
- 回答日時:
こんにちは
>行数は可変するので一番下までという事で、
この一番下とは何を基準にすれば良いのでしょうか?
示されている記録マクロを纏めると下記のようでも良いと思います。
デフォルトプロパティは省略していますが、違っていたら書き加えてください。
最終行はA列で値が入っている一番下のセルが行番号になっています。
A列4行目以下に値がない場合は、5行目までを対象にします。
Sub Macro1()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If lastRow < 4 Then lastRow = 5
With Range("A3:D" & lastRow)
.Borders.LineStyle = True
.Borders(xlInsideHorizontal).Weight = xlHairline
End With
Range("A3:D3").Borders(xlEdgeBottom).Weight = xlThin
Range("A3").Select
End Sub
ありがとうございます!
>この一番下とは何を基準にすれば良いのでしょうか?
取り急ぎA列基準で対応してくれたみたいですね、ありがとうございます。
それで問題ないです。
最終行(lastRow)は別の箇所で使用していたのでそこを再利用しました。
今試してみました。
期待通りの結果でした。
何故すぐにこんな簡潔にまとめられるのでしょう。
まだそれを作れる脳になってません。。。
一行一行読み解いているところです。
・A3からD列の最終行の範囲に対して罫線を引く
・A3からD3の範囲に対して罫線を引く
これで完成させているように見受けられました。
上下左右自由に引けるようになりたいです。
No.3
- 回答日時:
こんばんは
既に回答は出ていますけれど・・・
No1様がご回答の方式をそのままコードにしただけのものです。
Sub Sample_Q12366124()
Dim n
n = Application.Max(Cells(Row.Count, 1).End(xlUp).Row, 3)
With Range("A3:D3").Resize(n - 2)
.Borders.ColorIndex = xlAutomatic
.Borders.LineStyle = True
.Borders.Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlHairline
.Rows(1).Borders(xlEdgeBottom).Weight = xlThin
End With
End Sub
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
Excelのセル値に基づいて図形の...
-
ExcelのVBA。public変数の値が...
-
Excel_マクロ_現在開いているシ...
-
VBA アドインについて お詳しい...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
ソース内の行末に\\
-
エクセルで縦に並んだデータを...
-
Excel マクロでShearePoint先の...
-
VBAでカタカナ→ローマ字の変換...
-
非表示の列をすべて削除するマクロ
-
バッチファイルでEXCELを起動し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
Excel_マクロ_現在開いているシ...
-
TERA TERMを隠す方法
-
エクセルに張り付けた写真のフ...
-
Excelのセル値に基づいて図形の...
-
エクセルで縦に並んだデータを...
-
Excel マクロでShearePoint先の...
-
特定文字のある行の前に空白行...
-
ExcelVBAでPDFを閉じるソース
-
ソース内の行末に\\
-
Excel VBAからAccessマクロを実...
-
wordを起動した際に特定のペー...
-
エクセルで別のセルにあるふり...
-
UWLSの記録でマクロを作成し使...
おすすめ情報