Hi Bob, md,

Many thanks for your helpful replies.

Quote Originally Posted by xld
You would need to make changes to all of the routine, BotLeft, BotRight, etc., as well.
Thanks, I have updated all the routines accordingly.

Quote Originally Posted by xld
That should be

[vba]
Set r = Rng(Selection, 1)
x = r.Cells.Count
Set r = r.Cells(x, 1)[/vba]
Bob, I find that this doesn't quite work, as changing r (the active cell value that we want the selection to end up with as the Activecell) actually affects the Union Selection.

Is there an alternative way to do this, using say the "rngTriang" range?

Quote Originally Posted by xld

Try moving the toolbar build code to Workbook_Open.
This sounds promising, as I believe you mean similar to johnske's ALZ creation Article here. I can;t find the zip file though. I was hoping to just take johnske's generic Addin code and add in md's great modules to it. Have you got this file per chance, or any ideas how to integrate using his rigorous addin error-handling code?

Quote Originally Posted by xld
[vba]
Function Rng(Sel As Range, Direct As Long) As Range
x = 0: y = 0: z = 0
cls = Sel.Cells.Count
If Sel.Rows.Count > 1 Then
Set Rng = Sel.Columns(1)
Else
If Direct = -1 Then
If Sel.Cells(1, 1).Row - cls < 1 Then cls = Sel.Cells(1, 1).Row
Set Rng = Sel.Cells(1, 1).Offset(1 - cls).Resize(cls)
Else
Set Rng = Sel.Cells(1, 1).Resize(cls)
End If
End If
End Function[/vba]
I just tested this. I find that it doesn;t throw any more errors, which is fantatstic. Minor point, but in the example I gave, it highlights {H2,I2,I1}, instead of {H2,I2,K2,I1,J1}. Not a major issue, but just wondering if it's possible to do the second option. Also, the code throws a similar error if you hit the rows down the bottom of the worksheet i.e. after row 65536 (unlikely that anyone would ever run it down there though .

Also, sincerely sorry to bother, but the top-left routine for example throws a similar error if you exceed the column bounds (I only gave the row example). Is there any way to amend for this case?

Quote Originally Posted by mdmackillop
Please post your suggestions for error checking code. I can look at these this evening for incorporation.
md, the only error handling that I could come up with was the "Check_Selection_is_Range" macro to ensure that a proper range is selected, which I was hoping to understand how to integrate with the 6 macros from you.

As such, Bob has almost answered the other error-handling queries regarding row/column limits and the active cell postion etc.

The only other thing pending is integrating with Johnske's Addin code.

Could you please assist with the above. this is helping heaps, not just for my work purpose, but learning how MVPs approach tool development.

Sincere thanks to both of you, I am learning lots, at least from a testing and debugging front.

kind regards,