Quote Originally Posted by xluser2007
In terms of the actual code, the final output is supposed to be a selection tool and not highlighting. as such, I went through and changed your code as follows (in this case for the "TopLeft" macro):

From:

[vba]Sub TopLeft()
Set r = Rng(Selection, 1)
x = r.Cells.Count
Set r = r.Cells(1, 1)
Set rngTriang = r

For z = x To 1 Step -1
Set rngTriang = Union(rngTriang, r.Offset(y).Resize(, z))
rngTriang.Interior.ColorIndex = 6
y = y + 1
Next
rngTriang.Interior.ColorIndex = 1
r.Select

Set rngTriang = Nothing
End Sub[/vba]
to:

[vba]Sub TopLeft()
Set r = Rng(Selection, 1)
x = r.Cells.Count
Set r = r.Cells(1, 1)
Set rngTriang = r

For z = x To 1 Step -1
Set rngTriang = Union(rngTriang, r.Offset(y).Resize(, z))
y = y + 1
Next

rngTriang.Select
r.Activate

Set rngTriang = Nothing

End Sub[/vba]
Do you agree that these are th only changes I need to make with regards to making it a selection only tool?
You would need to make changes to all of the routine, BotLeft, BotRight, etc., as well.

Quote Originally Posted by xluser2007
2. For the Top Left macro, so as to make the activecell on the bottom left of the triangle what would I change the following lines to?
[vba]
Set r = Rng(Selection, 1)
x = r.Cells.Count
Set r = r.Cells(1, 1)[/vba]
That should be

[vba]
Set r = Rng(Selection, 1)
x = r.Cells.Count
Set r = r.Cells(x, 1)[/vba]

Quote Originally Posted by xluser2007
3. I find that the addin-toolbar doesn't always load when I open and Close Excel. To make it work, I need to keep Going to Tools>Addins and then unchecking the Triangle Addin, and then re-checking it to make the toolbar appear. Is there a way to make the toolbar appear every time you open an instance of excel and then having it remain docked whilst the instance of Excel remains open?
Try moving the toolbar build code to Workbook_Open.

Quote Originally Posted by xluser2007
4. In terms of error handling, I found that If I highlighted a single-row of cells, say H2:K2 and selected the bottom right triangle select macro, the macro threw a "Run-time error '1004' Application defined object error. Presumably, this is becasue it is trying to bulid a triangle of height 4, but can't actually select it, as there are not enough rows to go up. As such is there a way to ensure that the selections remain below Excel's row and column limits? In this example, the ideal output would be selecting the array fo cells {H2,I2,K2,I1,J1}.
[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]