View Single Post
  #11   Report Post  
Posted to microsoft.public.excel.programming
Rick Rothstein Rick Rothstein is offline
external usenet poster
 
Posts: 5,934
Default 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.