小兔网

下面我们将查看Excel VBA中的一个程序,该程序创建一个交互式Userform我们将要创建的用户窗体如下所示:

Excel VBA交互式用户表单

说明:每当您在ID文本框中输入一个值时,Excel VBA就会加载相应的记录。当您单击“编辑/添加”按钮时,Excel VBA将在工作表上编辑记录,或者在ID不存在时添加记录。清除按钮将清除所有文本框。关闭按钮关闭用户窗体。

要创建此用户窗体,请执行以下步骤。

1.打开Visual Basic编辑器如果“项目资源管理器”不可见,请单击“视图”,“项目资源管理器”。

2.单击插入,用户窗体。如果“工具箱”没有自动出现,请单击“视图”,“工具箱”。屏幕设置如下。

Excel VBA中的用户窗体屏幕设置

3.添加标签,文本框(第一个在顶部,第二个在第一个下方,依此类推)和命令按钮。完成此操作后,结果应与前面显示的用户窗体的图片一致。例如,通过在工具箱中单击TextBox创建一个文本框控件。接下来,您可以在用户窗体上拖动一个文本框。

4.您可以更改控件的名称和标题。在Excel VBA代码中使用名称。字幕是显示在屏幕上的字幕。更改控件的名称是一种很好的做法,但是此处没有必要,因为在此示例中,我们只有几个控件。要更改标签,文本框和命令按钮的标题,请单击“视图”,“属性窗口”,然后单击每个控件。

5.要显示用户窗体,请在工作表上放置一个命令按钮,并添加以下代码行:

私人  CommandButton1_Click()

UserForm1.Show

End Sub

现在,我们将创建Sub UserForm_Initialize。当您对用户窗体使用Show方法时,此子项将自动执行。

6.打开Visual Basic编辑器

7.在Project Explorer中,右键单击UserForm1,然后单击“查看代码”。

8.从左侧下拉列表中选择“用户表单”。从右侧的下拉列表中选择初始化。

9.添加以下代码行:

私人  UserForm_Initialize()

TextBox1.SetFocus

结束 

说明:此代码行将焦点设置在第一个文本框上,因为这是我们在加载用户窗体时要开始的位置。

现在,我们已经创建了用户表单的第一部分。尽管看起来已经很整洁,但是当我们在ID文本框中输入一个值或单击命令按钮之一时,什么也不会发生。

10.在Project Explorer中,右键单击UserForm1,然后单击“查看代码”。

11.从左侧下拉列表中选择TextBox1。从右边的下拉列表中选择更改。

12.添加以下代码行:

私有  TextBox1_Change()

GetData

结束 

13.在Project Explorer中,双击UserForm1。

14.双击“编辑/添加”命令按钮。

15.添加以下代码行:

私人  CommandButton1_Click()

EditAdd

结束 

16.双击清除命令按钮。

17.添加以下代码行:

私人  CommandButton2_Click()

ClearForm

结束 

说明:这些子调用将在第二秒创建其他子调用。

18.双击关闭命令按钮。

19.添加以下代码行:

Private Sub CommandButton3_Click()

卸载我

End Sub

说明:此代码行关闭用户窗体。

是时候创建潜艇了。您可以浏览我们的功能和子章节以了解有关子的更多信息。如果您有急事,只需将以下子项放入模块中(在Visual Basic编辑器中,单击“插入”,“模块”)。

20.首先,声明三个Integer类型的变量和一个Boolean类型的变量。在“常规声明”部分(在模块顶部)声明变量。这样,您只需要声明一次变量,就可以在多个子变量中使用它们。

Dim id  Integer,i  Integer,j  Integer,标志 Boolean

21.添加GetData子项。

的GetData()

如果则IsNumeric(UserForm1.TextBox1.Value)然后
    标志= 
    I = 0
    的id = UserForm1.TextBox1.Value

    待办事项 虽然细胞第(i + 1,1)。价值<> “”

        如果细胞(I + 1, 1)。价值= ID 接着
            标志= 
            对于 J = 2  3个
                UserForm1.Controls( “文本框” &J)。价值=细胞第(i + 1,j)的。价值
            接着 Ĵ
        结束 如果

        I = I + 1

    循环

    如果标志= False 然后
        对于 j = 2  3
            UserForm1.Controls(“ TextBox”&j).Value =“”
        下一个 j
    结束, 如果

其他
    ClearForm
结束, 如果

结束 Sub

说明:如果“ ID”文本框包含数字值,则Excel VBA将搜索ID并加载相应的记录。我们使用控件集合轻松地循环浏览文本框。如果Excel VBA找不到ID(标志仍然为False),它将清空第二个和第三个文本框。如果“ ID”文本框不包含数值,则Excel VBA会调用ClearForm子项。

22.添加ClearForm子项。

Sub ClearForm()

对于 j = 1  3
    UserForm1.Controls(“ TextBox”&j).Value =“”
下一个 j

结束 Sub

说明:Excel VBA清除所有文本框。

23.添加EditAdd子项。

Sub EditAdd()

Dim emptyRow  Long,

如果 UserForm1.TextBox1.Value <>“” 然后
    标志= False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range(“ A:A”))+ 1

     While单元格(i + 1,1).Value <>“”

        如果单元格(i + 1,1).Value = id 
            标志= True
            对于 j = 2  3个
                单元格(i + 1,j).Value = UserForm1 .Controls(“ TextBox”&j)。值
            下一 j
        结束 如果

        i = i + 1

    循环

    如果 flag = False, 
        对于 j = 1  3个
            单元格(emptyRow,j).Value = UserForm1.Controls(“ TextBox”&j).Value
        下一个 j
    End 如果

End 如果

End Sub

说明:如果“ ID”文本框不为空,则Excel VBA会在工作表上编辑记录(与前面看到的加载记录相反)。如果Excel VBA找不到ID(标志仍然为False),它将记录添加到下一个空行。变量emptyRow是第一个空行,每次添加记录时都会增加。

24.退出Visual Basic编辑器,在第1行中输入下面显示的标签,然后测试用户窗体。

Excel VBA交互式用户表单