Подтвердить что ты не робот

Предоставить инструмент/утилиту выбора диапазона для пользователя в Excel VBA

Я пытаюсь разработать форму пользователя в Excel 2007 VBA и хочу предоставить пользователю значок выбора диапазона, например: Range Selection Icon

Тем не менее, я не смог найти встроенный инструмент для создания формы или любой онлайн-инструмент, который обеспечивает это или, по крайней мере, дает мне представление. Если у кого-нибудь есть представление об этом, я буду очень благодарен им за помощь.

4b9b3361

Ответ 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 требуется отдельный диалог.