Создайте ToggleButton и программно измените его заголовок в EXCEL VBA - PullRequest
0 голосов
/ 03 марта 2020

В своем коде VBA я создаю несколько новых листов и добавляю кнопки и тумблер. У меня не было проблем с этим, но я хочу изменить заголовок ToggleButton, не нажимая на него.

Я думаю, что это возможно только путем написания кода на созданном листе, я пытался, но не могу вызвать свой метод, потому что лист не существует в начале кода ...

У вас есть идеи?

PS: Код для создания кнопки ToggleButton с макросом:

ActiveSheet.OLEObjects.Add(ClassType:=""Forms.ToggleButton.1"", Link:=False, DisplayAsIcon:=False, Left:=1195.5, Top:=77.25, Width:=87.75, Height:=100.5).Select

РЕДАКТИРОВАТЬ: мой код в модуле VBA

Ответы [ 3 ]

1 голос
/ 03 марта 2020

Удерживайте объект как ссылку, вместо Select его, а затем установите заголовок:

Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ToggleButton.1", Link:=False, DisplayAsIcon:=False, Left:=1195.5, Top:=77.25, Width:=87.75, Height:=100.5)
btn.Object.Caption = "fred"
0 голосов
/ 03 марта 2020

Если это только одна кнопка переключения (и вы не изменили ее имя по умолчанию), вы можете использовать индексное имя по умолчанию для ссылки на него, чтобы вы могли изменить заголовок.

Таким образом, вы бы использовали:

ActiveSheet.OLEObjects("ToggleButton1").Object.Caption = "Your Caption"

Если у вас есть более одного элемента управления, добавленного с помощью метода Add, и в целом вам действительно будет удобнее назначить их переменной и работает оттуда.

0 голосов
/ 03 марта 2020

С вашим текущим кодом вы можете просто сделать Selection.Caption = "NewCaption" сразу после его создания (чтобы не потерять выделение)

Возможно, я бы хотел назначить эту кнопку-переключатель переменной объекта, хотя В случае, если вы хотите сделать что-нибудь с этим дальше по линии. На самом деле, я бы старался избегать Select ...

...