Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 489
Default Combine Ranges to Draw Borders Issue

I have a Sub that I want to combine some ranges and draws borders around
them. The ranges are actually next to each other and when I use the Union
function it combines the ranges all into one address instead of a bunch of
addresses.

For example: the below code shows rng.Address = $C$10:$H$14, thus borders
get drawn around that range. But I want to draw borders around all the
little ranges I specified in rng, thus I want
rng.Address = $C$10:$E$14,$F$10:$F$14,$G$10:$G$14,$H$10:$H$14

Is there a way to do this?

Sub DrawBorders()

Dim rng As Range

' union ranges that need vertical lines
Set rng = Union(.Range("C" & lngFirstRow & ":E" & lngLastRow), _
.Range("F" & lngFirstRow & ":F" & lngLastRow), _
.Range("G" & lngFirstRow & ":G" & lngLastRow), _
.Range("H" & lngFirstRow & ":H" & lngLastRow))
Debug.Print rng.Address

' adds thin vertical lines to separate columns
With rng
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
End With

End Sub
--
Cheers,
Ryan
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 236
Default Combine Ranges to Draw Borders Issue

Maybe something along these lines:

Sub BorderMyRanges()
Dim RangesToHaveBorder As Collection
Dim oneRange As Range

'Instanceate the Collection object
Set RangesToHaveBorder = New Collection

'Add range object to the collection
RangesToHaveBorder.Add Range("A1", "A10") 'Adjust to your
according range
RangesToHaveBorder.Add Range("B1", "B10") 'Adjust to your
according range
RangesToHaveBorder.Add Range("C1", "C10") 'Adjust to your
according range
RangesToHaveBorder.Add Range("D1", "D10") 'Adjust to your
according range

'loop through the collecction and apply borders to each range
separatelly
For Each oneRange In RangesToHaveBorder
With oneRange
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
End With
Next oneRange

End Sub


On Nov 27, 4:40*pm, Ryan H wrote:
I have a Sub that I want to combine some ranges and draws borders around
them. *The ranges are actually next to each other and when I use the Union
function it combines the ranges all into one address instead of a bunch of
addresses. *

For example: *the below code shows rng.Address = $C$10:$H$14, thus borders
get drawn around that range. *But I want to draw borders around all the
little ranges I specified in rng, thus I want
rng.Address = $C$10:$E$14,$F$10:$F$14,$G$10:$G$14,$H$10:$H$14

Is there a way to do this?

Sub DrawBorders()

Dim rng As Range

* * * * ' union ranges that need vertical lines
* * * * Set rng = Union(.Range("C" & lngFirstRow & ":E" & lngLastRow), _
* * * * * * * * * * * * .Range("F" & lngFirstRow & ":F" & lngLastRow), _
* * * * * * * * * * * * .Range("G" & lngFirstRow & ":G" & lngLastRow), _
* * * * * * * * * * * * .Range("H" & lngFirstRow & ":H" & lngLastRow))
* * * * Debug.Print rng.Address

* * * * ' adds thin vertical lines to separate columns
* * * * With rng
* * * * * * .Borders(xlEdgeLeft).Weight = xlThin
* * * * * * .Borders(xlEdgeRight).Weight = xlThin
* * * * * * .Borders(xlEdgeTop).Weight = xlThin
* * * * * * .Borders(xlEdgeBottom).Weight = xlThin
* * * * End With

End Sub
--
Cheers,
Ryan


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 8,520
Default Combine Ranges to Draw Borders Issue

Once you combine using Union since the address is $C$10:$H$14 the borders
will be just around that range. Try

Set rng = Range("$C$10:$E$14,$F$10:$F$14,$G$10:$G$14,$H$10:$ H$14")
rng.BorderAround Weight:=xlThin

If this post helps click Yes
---------------
Jacob Skaria


"Ryan H" wrote:

I have a Sub that I want to combine some ranges and draws borders around
them. The ranges are actually next to each other and when I use the Union
function it combines the ranges all into one address instead of a bunch of
addresses.

For example: the below code shows rng.Address = $C$10:$H$14, thus borders
get drawn around that range. But I want to draw borders around all the
little ranges I specified in rng, thus I want
rng.Address = $C$10:$E$14,$F$10:$F$14,$G$10:$G$14,$H$10:$H$14

Is there a way to do this?

Sub DrawBorders()

Dim rng As Range

' union ranges that need vertical lines
Set rng = Union(.Range("C" & lngFirstRow & ":E" & lngLastRow), _
.Range("F" & lngFirstRow & ":F" & lngLastRow), _
.Range("G" & lngFirstRow & ":G" & lngLastRow), _
.Range("H" & lngFirstRow & ":H" & lngLastRow))
Debug.Print rng.Address

' adds thin vertical lines to separate columns
With rng
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
End With

End Sub
--
Cheers,
Ryan

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 298
Default Combine Ranges to Draw Borders Issue



sub DoAllBorders()
DrawBorders .Range("C" & lngFirstRow & ":E" & lngLastRow)
DrawBorders .Range("F" & lngFirstRow & ":F" & lngLastRow)
DrawBorders .Range("G" & lngFirstRow & ":G" & lngLastRow)
DrawBorders .Range("H" & lngFirstRow & ":H" & lngLastRow)
end sub

Sub DrawBorders(rng as range)
' adds thin vertical lines to separate columns
With rng
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
End With
End Sub



Tim


"Ryan H" wrote in message
...
I have a Sub that I want to combine some ranges and draws borders around
them. The ranges are actually next to each other and when I use the Union
function it combines the ranges all into one address instead of a bunch of
addresses.

For example: the below code shows rng.Address = $C$10:$H$14, thus borders
get drawn around that range. But I want to draw borders around all the
little ranges I specified in rng, thus I want
rng.Address = $C$10:$E$14,$F$10:$F$14,$G$10:$G$14,$H$10:$H$14

Is there a way to do this?

Sub DrawBorders()

Dim rng As Range

' union ranges that need vertical lines
Set rng = Union(.Range("C" & lngFirstRow & ":E" & lngLastRow), _
.Range("F" & lngFirstRow & ":F" & lngLastRow), _
.Range("G" & lngFirstRow & ":G" & lngLastRow), _
.Range("H" & lngFirstRow & ":H" & lngLastRow))
Debug.Print rng.Address

' adds thin vertical lines to separate columns
With rng
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
End With

End Sub
--
Cheers,
Ryan



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Combine two predefined borders sammy Excel Discussion (Misc queries) 4 September 2nd 08 06:44 PM
vlookup and sumproduct combine issue [email protected] Excel Worksheet Functions 0 October 24th 07 07:26 PM
draw borders around deleted duplicate cells hayk_yer - ExcelForums.com Excel Programming 3 September 3rd 04 08:56 AM
API to draw borders Bharath Excel Programming 3 May 7th 04 10:44 PM
Borders - non-contiguous ranges Richard[_20_] Excel Programming 5 January 19th 04 06:14 PM


All times are GMT +1. The time now is 07:23 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"