View Full Version : [SOLVED:] How create border in excel vba
Mouli
09-24-2024, 10:06 AM
I am trying a border using VBA in excel but am getting object required error. Kindly help me to fix
Paul_Hossler
09-24-2024, 12:34 PM
Without seeing your code and knowing what kind of borders you want, it's hard to say
The first is the macro recorder, the second is some cleanup
Option Explicit
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1:D12").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Sub Macro2()
With Range("A1:D12")
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
With .Borders
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
End Sub
Mouli
09-24-2024, 08:45 PM
Without seeing your code and knowing what kind of borders you want, it's hard to say
The first is the macro recorder, the second is some cleanup
Option Explicit
Sub Macro1()
' Macro1 Macro
Range("A1:D12").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Sub Macro2()
With Range("A1:D12")
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
With .Borders
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
End Sub
Sub ApplyDynamicBorder()
Dim ws As Worksheet
Dim lastRow As Long
Dim lastCol As Long
Dim tableRange As Range
' Set the worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
' Find the last row with data in column A
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' Find the last column with data in row 1
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' Define the range of the table
Set tableRange = ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol))
' Apply borders to the table range
With tableRange.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 0
End With
End Sub
Mouli
09-24-2024, 08:46 PM
I am using above code but am getting object required error and I am trying here to create dynamic border based on the data changes in source file
p45cal
09-25-2024, 02:13 AM
I get no error with your ApplyDynamicBorder code!
It gives a thin black border around every cell in the table.
Is that what you want?
Paul's suggestion was to put a border around the whole range (table) and no borders around each cell. If that's your preference then your section ' Apply borders to the table range might be reduceable to one line:
tableRange.BorderAround 1
however, you might want a bit more control, eg. a medium thickness green continuous border:
tableRange.BorderAround LineStyle:=xlContinuous, Weight:=xlMedium, Color:=RGB(143, 219, 41)
More info:
https://learn.microsoft.com/en-us/office/vba/api/excel.range.borderaround
Mouli
09-25-2024, 02:27 AM
Yes you are right. But am getting object required error while running that code. Could you please me anything I am missing over there
Mouli
09-25-2024, 02:37 AM
It is worked now. Thanks for your help
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.