Диалог справки по пользовательским функциям Excel VBA - PullRequest
1 голос
/ 13 января 2020

В течение многих лет я делал много функций для Excel VBA, но мне всегда было интересно, как создать более подробное диалоговое окно справки.

Для встроенных функций вы получаете что-то вроде этого :

enter image description here

Как я могу делать такие вещи, где он показывает тип переменной и, если она имеет значение по умолчанию, каково это значение. В прошлом я видел некоторые вещи, в которых, если вы экспортируете файл, затем добавляете некоторый код в текстовый редактор, а затем импортируете его обратно, вы можете получить дополнительные функциональные возможности, которые Excel VBA изначально не поддерживает ... не было уверен, что что-то подобное также существует для такого типа функций.

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 января 2020

Instr определяется в VBA следующим образом:

Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare])

VbCompareMethod - это перечисление с 3 членами. Вы можете определить функции для использования перечислений, если хотите (даже настраиваемые, которые вы создаете).

В этом случае перечисление - это просто выбор нескольких различных целочисленных значений. Они полезны для ограничения того, какие целые числа принимаются в подпрограмме, для удобства чтения в будущем и для того, чтобы помочь программисту легче узнать, какие опции доступны с помощью intellisense (я думаю, вы называете intellisense «диалогом помощи»)

0 голосов
/ 13 января 2020

Используйте следующие шаги для создания пользовательского элемента управления.

Создание пользовательской формы: Чтобы создать пользовательское диалоговое окно, необходимо создать пользовательскую форму. Чтобы создать пользовательскую форму, щелкните «Пользовательская форма» в меню «Вставка» в редакторе Visual Basi c.

Используйте окно «Свойства», чтобы изменить имя, поведение и внешний вид формы. Например, чтобы изменить заголовок в форме, установите свойство Caption.

Добавление элементов управления в форму пользователя Чтобы добавить элементы управления в форму пользователя, найдите элемент управления, который вы хотите добавить в Панель инструментов, перетащите элемент управления на форму, а затем перетаскивайте ручку регулировки на элементе управления, пока контур элемента управления не будет иметь требуемый размер и форму.

Примечание Перетаскивание элемента управления или нескольких «сгруппированных» элементов управления из формы обратно в панель инструментов создается шаблон элементов управления, который можно использовать повторно. Это полезная функция для реализации стандартного интерфейса для ваших приложений.

После добавления элементов управления на форму используйте команды в меню «Формат» в редакторе Visual Basi c, чтобы настроить выравнивание элемента управления и spacing.

Инициализация свойств элемента управления Вы можете инициализировать элементы управления во время выполнения, используя код Visual Basi c в макросе. Например, вы можете заполнить список, задать текстовые значения или установить кнопки выбора.

В следующем примере метод AddItem используется для добавления данных в список. Затем он устанавливает значение текстового поля и отображает форму.

Private Sub GetUserName() 
 With UserForm1 
 .lstRegions.AddItem "North" 
 .lstRegions.AddItem "South" 
 .lstRegions.AddItem "East" 
 .lstRegions.AddItem "West" 
 .txtSalesPersonID.Text = "00000" 
 .Show 
 ' ... 
 End With 
End Sub

Вы также можете использовать код в событии Initialize формы, чтобы установить начальные значения для элементов управления в форме. Преимущество установки начальных контрольных значений в событии Initialize заключается в том, что код инициализации остается в форме. Вы можете скопировать форму в другой проект, и при запуске метода Show для отображения диалогового окна элементы управления будут инициализированы.

Private Sub UserForm_Initialize() 
 UserForm1.lstNames.AddItem "Test One" 
 UserForm1.lstNames.AddItem "Test Two" 
 UserForm1.txtUserName.Text = "Default Name" 
End Sub

События элемента управления и диалогового окна После того, как вы добавив элементы управления в диалоговое окно или документ, вы добавляете процедуры обработки событий, чтобы определить, как элементы управления реагируют на действия пользователя.

Пользовательские формы и элементы управления имеют предопределенный набор событий. Например, командная кнопка имеет событие Click, которое происходит, когда пользователь нажимает командную кнопку, а пользовательские формы имеют событие Initialize, которое запускается при загрузке формы.

Чтобы написать процедуру события элемента управления или формы, откройте модуль, дважды щелкнув форму или элемент управления и выбрав событие из списка процедур.

Процедуры обработки событий включают имя элемента управления. Например, имя процедуры события Click для командной кнопки с именем Command1 - Command1_Click.

Если вы добавите код в процедуру события, а затем измените имя элемента управления, ваш код останется в процедурах с предыдущим name.

Например, предположим, что вы добавили код в событие Click для Command1, а затем переименовали элемент управления в Command2. Если дважды щелкнуть Command2, вы не увидите никакого кода в процедуре события Click. Вам нужно будет переместить код из Command1_Click в Command2_Click.

Чтобы упростить разработку, рекомендуется писать имена элементов управления перед написанием кода.

Отображение пользовательского диалогового окна Чтобы проверить диалоговое окно в редакторе Visual Basi c, нажмите кнопку «Запустить Sub / UserForm» в меню «Выполнить» в редакторе Visual Basi c.

Чтобы отобразить диалоговое окно из Visual Basi c, используйте метод Show. В следующем примере отображается диалоговое окно с именем UserForm1.

Private Sub GetUserName() 
 UserForm1.Show 
End Sub

Использование значений элементов управления во время выполнения кода Некоторые свойства элементов управления можно устанавливать и возвращать во время выполнения кода Visual Basi c. В следующем примере свойство Text текстового поля устанавливается равным «Hello».

TextBox1.Text = "Hello"

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

Если вы хотите сохранить данные, введенные в форму, вы можете сохранить информацию в переменные уровня модуля, пока форма еще работает. В следующем примере отображается форма и сохраняются данные формы.

' Code in module to declare public variables. 
Public strRegion As String 
Public intSalesPersonID As Integer 
Public blnCancelled As Boolean 

' Code in form. 
Private Sub cmdCancel_Click() 
 Module1.blnCancelled = True 
 Unload Me 
End Sub 

Private Sub cmdOK_Click() 
 ' Save data. 
 intSalesPersonID = txtSalesPersonID.Text 
 strRegion = lstRegions.List(lstRegions.ListIndex) 
 Module1.blnCancelled = False 
 Unload Me 
End Sub 

Private Sub UserForm_Initialize() 
 Module1.blnCancelled = True 
End Sub 

' Code in module to display form. 
Sub LaunchSalesPersonForm() 
 frmSalesPeople.Show 
 If blnCancelled = True Then 
 MsgBox "Operation Cancelled!", vbExclamation 
 Else 
 MsgBox "The Salesperson's ID is: " & 
 intSalesPersonID & _ 
 "The Region is: " & strRegion 
 End If 
End Sub

Надеюсь, это поможет.

...