基于VBA的数据录入界面开发

tech2023-02-01  112

基于VBA的数据录入界面开发:

一、用户需求:

EXCEL表格中需要录入信息过多,人为查找耗时且易出错。

二、功能实现:

根据输入信息,在界面查找并显示相应数据。在界面填写待填充信息,同步保存到EXCEL表格。

三、操作步骤:

1. 打开电脑已安装的EXCEL软件,点击“选项”

 

 2. 勾选“Developer”,编程环境可在EXCEL上方看到。

3. 现在就可以编写属于自己的程序,笔者是针对工厂实际生产问题做的信息录入界面,首先点击”Visual Basic”,点击“UserForm”,这是我们的用户界面 ,点击“ToolBox”,这就是我们主要使用到的工具箱。

 

 

4. 将Toolbox中的编辑框和按钮拖动到用户窗口中,如图,大家可以随意尝试。

5. 单击编辑框,在左下角可以看到这个编辑框的属性,我们可以修改这个编辑框的名字,一会儿我们程序里面用到的变量就是这个,其他属性根据你的要求再修改。其他编辑框都是类似的操作。

 

6. OK,我们双击我们拉出来的按钮控件,即可进入按钮对应的子程序,我们可以在空白处写上自己的程序。

7. 为了满足我自己的需求,主要分为两部分,第一个是查询数据,第二个是保存数据,这是我使用上述方法创建的界面,“查找”和“保存”按钮实现的代码如下。变量名是红色字体。

程序中使用到的变量名:

“查找”按钮对应程序:

Private Sub Find_data_Click() '非空验证 If KR_serial.Value = "" Then MsgBox "要查询的序列号为空", vbCritical, "输入错误" KR_serial.SetFocus Exit Sub End If '刷新 Application.ScreenUpdating = False Sheet1.Activate '获取数据源区域和查询条件 Dim KR_ID As String: KR_ID = KR_serial.Text Dim lastRow As Integer: lastRow = Range("E65536").End(xlUp).Row Cells.Replace "#N/A", "", xlWhole Set sourceArea = Range(Cells(2, 1), Cells(lastRow, 26)) '获取匹配记录 Dim sourceRow As Integer Dim sum As Integer: sum = 0 For sourceRow = 1 To sourceArea.Rows.Count If sum < 2 Then If sourceArea.Item(sourceRow, 5).Value = KR_ID Then KR_plan.Text = sourceArea.Item(sourceRow, 1).Value KR_type.Text = sourceArea.Item(sourceRow, 2).Value KR_material.Text = sourceArea.Item(sourceRow, 3).Value KR_order.Text = sourceArea.Item(sourceRow, 4).Value KR_name.Text = sourceArea.Item(sourceRow, 6).Value KR_base.Text = sourceArea.Item(sourceRow, 7).Value KR_FYI.Text = sourceArea.Item(sourceRow, 8).Value KR_control_material.Text = sourceArea.Item(sourceRow, 9).Value KR_PO_promise.Text = sourceArea.Item(sourceRow, 10).Value KR_PO_in.Text = sourceArea.Item(sourceRow, 11).Value KR_control_num.Text = sourceArea.Item(sourceRow, 12).Value PLC.Text = sourceArea.Item(sourceRow, 13).Value Date_cali.Text = sourceArea.Item(sourceRow, 14).Value Date_run.Text = sourceArea.Item(sourceRow, 15).Value Date_match.Text = sourceArea.Item(sourceRow, 16).Value Run_before.Text = sourceArea.Item(sourceRow, 17).Value Run_after.Text = sourceArea.Item(sourceRow, 18).Value Time.Text = sourceArea.Item(sourceRow, 19).Value NCR.Text = sourceArea.Item(sourceRow, 20).Value Action.Text = sourceArea.Item(sourceRow, 21).Value Remark.Text = sourceArea.Item(sourceRow, 22).Value Name_run.Text = sourceArea.Item(sourceRow, 25).Value Name_match.Text = sourceArea.Item(sourceRow, 26).Value sum = sum + 1 Application.ScreenUpdating = True End If Else MsgBox "序列号重复", vbCritical, "输入错误" Exit Sub End If Next End Sub

“保存” 按钮对应程序

Private Sub Save_data_Click() '非空验证 If Date_cali.Value = "" Or Date_run.Value = "" Or Date_match.Value = "" _ Or Run_before.Value = "" Or Run_after.Value = "" Or Time.Value = "" _ Or NCR.Value = "" Or Action.Value = "" Or Remark.Value = "" _ Or Name_run.Value = "" Or Name_match.Value = "" Then MsgBox "信息录入不完整 !", vbCritical, "录入错误" Date_cali.SetFocus Exit Sub End If '保存数据 Application.ScreenUpdating = False Sheet1.Activate '获取匹配记录 Dim KR_ID As String: KR_ID = KR_serial.Text Dim lastRow As Integer: lastRow = Range("A65536").End(xlUp).Row '自下而上查找最后一行 Cells.Replace "#N/A", "", xlWhole '将#NA部分全部替代 Set sourceArea = Range(Cells(2, 1), Cells(lastRow, 26)) Dim sourceRow As Integer '替换数据 For sourceRow = 1 To sourceArea.Rows.Count If sourceArea.Item(sourceRow, 5).Value = KR_ID Then sourceArea.Item(sourceRow, 14).Value = Date_cali.Text sourceArea.Item(sourceRow, 15).Value = Date_run.Text sourceArea.Item(sourceRow, 16).Value = Date_match.Text sourceArea.Item(sourceRow, 17).Value = Run_before.Text sourceArea.Item(sourceRow, 18).Value = Run_after.Text sourceArea.Item(sourceRow, 19).Value = Time.Text sourceArea.Item(sourceRow, 20).Value = NCR.Text sourceArea.Item(sourceRow, 21).Value = Action.Text sourceArea.Item(sourceRow, 22).Value = Remark.Text sourceArea.Item(sourceRow, 25).Value = Name_run.Text sourceArea.Item(sourceRow, 26).Value = Name_match.Text MsgBox "用户信息保存成功!", vbInformation, "操作成功" Application.ScreenUpdating = True End If Next End Sub

8. 在完成变成后切记将EXCEL文件保存格式设置为 “*.xlsx” ,只有这种格式才能保存刚才编辑的代码。

四、使用说明

1. 双击进入excel界面

2. 点击Update按钮自动进入界面。

3. 在系列号框内输入你想要查找的机器人序列号,点击“查找”,如下自动出现信息,

4. 用户可在右侧“用户输入窗口“输入文字,点击“保存”即可自动同步到EXCEL表格。

5. 可在EXCEL中找到对应导入数据,操作成功:

 

最新回复(0)