Spence,
Hoo boy. So, this is how I'm teaching myself programming, ya see...
Anyways, I noticed that the last iteration didn't quite work if there were
already textboxes - it wrote the first new one over the last old one. So,
after this I'm going to wait and see if this is even on the right track for
you.:
Private Sub CommandButton1_Click()
Dim ctl As Shape
Dim txtbox_top As Integer, txtbox_left As Integer, _
txtbox_height As Integer, txtbox_width As Integer, _
txtbox_spacing As Integer, txtbox_count As Integer, i As Integer
txtbox_top = 0
txtbox_left = ActiveSheet.Columns(1).Width
txtbox_height = 10
txtbox_width = ActiveSheet.Columns(2).Width
txtbox_spacing = 20
txtbox_count = 0
For Each ctl In ActiveSheet.Shapes
If ctl.Type = 17 Then
If ctl.Top > txtbox_top Then
With ctl
txtbox_top = .Top
txtbox_left = .Left
txtbox_height = .Height
txtbox_width = .Width
End With
End If
txtbox_count = txtbox_count + 1
End If
Next ctl
If txtbox_count > 0 Then
txtbox_top = txtbox_top + txtbox_spacing
End If
For i = 1 To ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row -
txtbox_count
Set ctl = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
txtbox_left, txtbox_top, txtbox_width, txtbox_height)
txtbox_top = txtbox_top + txtbox_spacing
Next i
End Sub
hth,
Doug