I'd create a number of named rectangles I wanted to reposition on a sheet like this
Sub Cre8NuSheet()
'(Create & format sheet logic here)
Call AddButtons(6, True)
End Sub
Sub RefreshButtons()
Call AddButtons(6, False)
End Sub
Sub AddButtons(number As Integer, newButtons As Boolean)
'routine to create a number of buttons
Dim Button As Shape
Dim i As Integer
'Dim Button As New Collection
For i = 1 To number
If newButtons = True Then
Set Button = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 0, 0, 50, 25)
Else
Set Button = ActiveSheet.Shapes("myButton" & i)
End If
With Button
.Left = ActiveSheet.Columns("D").Left
.Top = (50 * (i - 1)) + (10 * i)
.Name = "myButton" & i
End With
Next
Set myButton = Nothing
End Sub
Although if you set the Placement property of the shape to = xlMove when you create it, it will move with the column if it resizes anyway