Excel VBA 自定义函数帮助对话框

Excel VBA custom functions help dialog

这些年来我一直在为ExcelVBA做很多功能,但我一直想知道如何做一个更详细的帮助对话框。

对于内置函数,您会得到如下内容:

我怎么能做这样的事情,它显示变量类型,如果它有默认值,该值是什么。我在过去看到过一些事情,如果你导出文件,然后在文本编辑器中添加一些代码,然后将其导入回来,你可以获得 Excel VBA 没有的额外功能原生支持...不确定此类功能是否也存在类似的东西。

提前致谢!

Instr 在 VBA 中定义如下:

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

VbCompareMethod 是一个包含 3 个成员的枚举。如果愿意,您也可以定义使用枚举的函数(甚至是您创建的自定义函数)。

在这种情况下,枚举只是选择几个不同的整数值。它们有助于限制在例程中接受哪些整数,以便将来的可读性,并帮助程序员更轻松地了解使用 intellisense 可以使用哪些选项(我认为您将 intellisense 称为 "help dialog")

使用以下步骤创建自定义控件。

创建用户表单: 要创建自定义对话框,您必须创建一个用户窗体。若要创建用户窗体,请单击 Visual Basic 编辑器中“插入”菜单上的“用户窗体”。

使用属性 window 更改表单的名称、行为和外观。例如,要更改表单上的标题,请设置标题 属性.

向用户窗体添加控件 要向用户窗体添加控件,请在工具箱中找到要添加的控件,将控件拖到窗体上,然后在控件上拖动调整手柄,直到控件的轮廓达到所需的大小和形状。

注意将一个控件或多个 "grouped" 控件从窗体拖回工具箱会创建一个控件模板,该模板可以重复使用。这是为您的应用程序实现标准接口的有用功能。

将控件添加到窗体后,使用 Visual Basic 编辑器中“格式”菜单上的命令调整控件对齐方式和间距。

正在初始化控件属性 您可以在 运行 时间通过在宏中使用 Visual Basic 代码来初始化控件。例如,您可以填充列表框、设置文本值或设置选项按钮。

以下示例使用 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 事件,该事件在加载窗体时 运行s。

要编写控件或窗体事件过程,请通过 double-clicking 窗体或控件和 select 过程列表框中的事件打开模块。

事件过程包括控件的名称。例如,名为 Command1 的命令按钮的 Click 事件过程的名称是 Command1_Click.

如果您将代码添加到事件过程然后更改控件的名称,您的代码将保留在具有以前名称的过程中。

例如,假设您将代码添加到 Command1 的 Click 事件,然后将控件重命名为 Command2。当您 double-click Command2 时,您将看不到 Click 事件过程中的任何代码。您需要将代码从 Command1_Click 移动到 Command2_Click.

为了简化开发,最好在编写代码之前命名控件。

显示自定义对话框 要在 Visual Basic 编辑器中测试对话框,请单击 Visual Basic 编辑器中 运行 菜单上的 运行 Sub/UserForm。

要从 Visual Basic 中显示对话框,请使用 Show 方法。以下示例显示名为 UserForm1 的对话框。

Private Sub GetUserName() 
 UserForm1.Show 
End Sub

在代码为 运行ning 时使用控件值 当 Visual Basic 代码为 运行ning 时,可以设置和 return 编辑一些控件属性。以下示例将文本框的 Text 属性 设置为 "Hello."

TextBox1.Text = "Hello"

用户在表单中输入的数据在表单关闭时丢失。如果在卸载窗体后 return 窗体上的控件值,您将获得控件的初始值而不是用户输入的值。

如果要保存在表单中输入的数据,可以在表单仍处于 运行ning 状态时将信息保存到 module-level 变量。以下示例显示一个表单并保存表单数据。

' 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

希望对您有所帮助。