Предоставить инструмент/утилиту выбора диапазона для пользователя в Excel VBA
Я пытаюсь разработать форму пользователя в Excel 2007 VBA и хочу предоставить пользователю значок выбора диапазона, например: ![Range Selection Icon]()
Тем не менее, я не смог найти встроенный инструмент для создания формы или любой онлайн-инструмент, который обеспечивает это или, по крайней мере, дает мне представление. Если у кого-нибудь есть представление об этом, я буду очень благодарен им за помощь.
Ответы
Ответ 1
Этот элемент управления называется элементом управления RefEdit.
Чтобы использовать его, вы должны сначала добавить его в окно панели инструментов, щелкнув правой кнопкой мыши в окне панели инструментов и выбрав Дополнительные элементы управления... Затем вы выбираете RefEdit.Ctrl и закройте диалог.
Теперь вы можете выбрать его на панели инструментов и поместить в форму.
Ответ 2
Другой альтернативой использованию 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 требуется отдельный диалог.