Conditional Borders through a Macro
This would probably be considered a little "cleaner"...
Sub Demo()
Dim R As Range
Dim StartRow As Long
Dim LastRow As Long
Dim BorderStyle As Variant
StartRow = 2
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set R = Worksheets("Sheet1").Range("A" & StartRow & ":A" & LastRow). _
Resize(LastRow - 1, 27).SpecialCells(xlCellTypeVisible)
For Each BorderStyle In Array(xlEdgeTop, xlInsideHorizontal)
With R.Borders(BorderStyle)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 9
End With
Next
End Sub
--
Rick (MVP - Excel)
"Rick Rothstein" wrote in message
...
I would not have used a loop initially; rather, I would have built a range
from the StartCell to the LastRow and then applied the Borders properties
to that. Doing it that way, then adding the SpecialCells condition for
visible cells is easy...
Sub Demo()
Dim R As Range
Dim StartRow As Long
Dim LastRow As Long
StartRow = 2
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Set R = Worksheets("Sheet1").Range("A" & StartRow & ":A" & LastRow). _
Resize(LastRow - 1, 27).SpecialCells(xlCellTypeVisible)
With R.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 9
End With
With R.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = 9
End With
End Sub
--
Rick (MVP - Excel)
"MSchmidty2" wrote in message
...
Revisiting this issue, I would like to learn how to program the code
below to
ignore hidden rows, if possible. I appreciate any help
"Sam Wilson" wrote:
Colour is easy - After the line:
.offset(i,0).Resize(1, 27).Borders(xlEdgeTop).Weight = xlThick
add this line
.offset(i,0).Resize(1, 27).Borders(xlEdgeTop).Colorindex = 9
Not quite sure what you mean about the hidden rows?
"MSchmidty2" wrote:
Sam, Thank you. this is what I was looking for. Two questions: 1.
How can
I change the color of the line to dark red? And secondly, is there a
way to
compensate for hidden rows? I'm using other control toolbox button
macros to
display certain information within the same job number. Again,
thanks.
"Sam Wilson" wrote:
Sub Demo()
dim i as integer
with range("a2")
do until isempty(.offset(i,0))
if not .offset(i-1,0).value = .offset(i,0).value then
.offset(i,0).Resize(1, 27).Borders(xlEdgeTop).Weight = xlThick
end if
i=i+1
loop
end with
End Sub
"MSchmidty2" wrote:
I'm fairly new to VBA programming and using Excel 2003. I'm
interested in
learning how to make a Macro that creates a number of thick
borders across
columns "A" to "AA". These borders will divide lines of
information from one
job number to the next, but the job numbers have a random number
of
operations assigned to them, each with it's own row.
Such as: M1234 - Operation A <next row M1234 -Operation B
<next row
M1234 - Operation C <next row M1235 Operation A and so on. I am
already
using some conditional formatting in a few of the columns of the
worksheet,
so a macro seems my best option. The worksheet is about 1300 rows
long, but
that is also random, so I'm looking to automatically adjust to the
length.
Any tips will be appreciated. Thanks.
|