Другой альтернативой использованию RefEdit.Ctrl является подключение к недокументированным функциям элемента управления TextBox и использование функции Application.InputBox .
Существуют два свойства элемента управления TextBox, которые не отображаются в диалоговом окне «Свойства», что позволяет добавить кнопку справа. Это DropButtonStyle и ShowDropButtonWhen . При нажатии кнопки запускается событие DropButtonClick для элемента управления, в котором можно отобразить поле ввода.
Начните с размещения элемента TextBox в форме. Затем добавьте следующее к процедуре UserForm_Initialize :
Private Sub UserForm_Initialize()
txtRefersTo.DropButtonStyle = frmDropButtonStyleReduce
txtRefersTo.ShowDropButtonWhen = frmShowDropButtonWhenAlways
End Sub
Затем добавьте обработчик события к событию DropButtonClick следующим образом для захвата диапазона с помощью диалога Application.InputBox :
Private Sub txtRefersTo_DropButtonClick()
Me.Hide
txtRefersTo.Text = Application.InputBox("Select the range", "Range Picker", txtRefersTo.Text, Type:=8)
Me.Show vbModal
End Sub
Основным преимуществом этого подхода является то, что он позволяет размещать элемент управления в рамке или на отдельной вкладке, не испытывая проблем, связанных с RefEdit.Ctrl . Недостатком является то, что для взаимодействия с Excel требуется отдельный диалог.