Если вы l oop над элементами диапазона, не имеет значения, пересекаете ли вы столбцы или строки. Вот пример Button
:
Sub BoxAdder()
Dim rng As Range, r As Range, bt As Button, s As Shape
Set rng = Range("A1:G1")
For Each r In rng
ActiveSheet.Buttons.Add(94.5, 75.75, 51, 27.75).Select
Set bt = Selection
bt.Characters.Text = r.Address(0, 0)
Set s = ActiveSheet.Shapes(Selection.Name)
With s
.Top = r.Top
.Left = r.Left
.Width = r.Width
.Height = r.Height
End With
Next r
End Sub
Код размещает кнопки в ячейках A1, B1, C1, D1, E1. F1 и G1 последовательно. Чтобы расположить кнопки вниз по столбцу, просто измените:
Set rng = Range("A1:G1")
на:
Set rng = Range("A1:A4")
Обратите внимание, что для целей перемещения и определения размера каждый Button
рассматривается как Shape
.