Кнопки VBA, которые могут двигаться?

Я сталкиваюсь со стеной, когда дело доходит до добавления кнопок в VBA.

У меня есть электронная таблица, в которой потенциально могут быть расширены строки или добавлены строки. На данный момент единственный способ, которым я знаю, как добавлять кнопки с помощью макроса (т.е. когда вы нажимаете эту кнопку, ниже появляются еще три кнопки) - это система координат

With ActiveSheet.CheckBoxes.Add(185, 464, 72, 18)
    .Name = "firstcheckbox"
    .Caption = "CLICK ME"
End With

Однако, если кто-то добавляет строки выше в форму ДО того, как он нажмет кнопку создания кнопки, эти координаты больше не будут хорошими, и три кнопки появятся выше, чем мне бы хотелось.

Я сломал себе мозг, пытаясь исследовать это. Есть ли какой-то очевидный способ создать эти кнопки с ячейкой вместо координат, чтобы не имело значения, сколько строк добавляется выше?

With ActiveSheet.CheckBoxes.Add.Range("C6")
    .Name = "firstcheckbox"
    .Caption = "CLICK ME"
End With

или что-то подобное? Или я ограничен системой координат?

Любая помощь будет принята с благодарностью!


person ladymrt    schedule 08.02.2017    source источник


Ответы (1)


Просто получите свойства Left и Top из диапазона, а затем передайте их в Checkboxes.Add:

With ActiveSheet.CheckBoxes.Add(Range("C6").Left, Range("C6").Top, 72, 18)
    .Name = "firstcheckbox"
    .Caption = "CLICK ME"
End With
person Comintern    schedule 08.02.2017
comment
Большое спасибо! Я предполагаю, что это все еще вызывает у меня проблему изменения указанной ячейки при добавлении строки в любом случае, но, серьезно, эта проблема беспокоила меня в течение долгого времени. - person ladymrt; 09.02.2017