Excel VBA编程  典型实例——在窗口中显示记录信息
某大型商店在每次进货后,都会将进货的记录输入到Excel中。但是,采用手工在工作表中输入的方法非常费时。这时,可以通过VBE创建用户窗体,并输入实现代码,来代替操作员在工作表中的直接输入。

1.练习要点
用户窗体
使用控件及属性设置
代码
2.操作步骤:
(1)在工作表Sheet1的单元格A1至H2区域中,输入相应的信息,并设置单元格的格式,如图14-12所示。
图14-12  设置工作表Sheet1
(2)在工作表Sheet2的单元格A1至A6区域中,设置单元格格式并输入员工姓名,如图14-13所示。
图14-13  设置工作表Sheet2
提 示
员工姓名对应操作员和进货人
(3)进入VBE环境,创建用户窗体UserForm1,并向窗体中添加控件,如图14-14所示。
图14-14  添加控件
(4)设置用户窗体中控件的Caption属性,并设置流水号框TextBox2的Enabled属性的值为False。如图14-15所示。
图14-15  设置属性
提 示
设置窗体中按钮的姓名属性。按钮【首条】的名称为“cmdFirst”、【上一条】的为“cmdPrev”、【下一条】为“cmdNext”、【末条】为“cmdLast”、【新增】为“cmdAdd”、【保存】为“cmdSave”。
(5)右击窗体,执行【查看代码】命令,打开【代码】编辑窗口。
(6)在左边的列表框中选择“UserForm”对象,在右边的列表框中选择“Initialize”事件,并在该事件中输入代码,如图14-16所示。
图14-16  输入代码
代码如下:
'声明公有变量
Public Flag As Integer  '窗体中显示的当前行
Public totleRange As Integer  '工作表的总记录数
'初始化
Private Sub UserForm_Initialize()
    Dim i As Integer
    '初始化组合框  Psum过程用于统计员工人数
    For i = 2 To Psum
        ComboBox1.AddItem Sheet2.Range("A" + Trim(Str(i)))    '填充操作员
        ComboBox2.AddItem Sheet2.Range("A" + Trim(Str(i)))  '填充进货人
    Next i
    LoadForm    '加载窗体
End Sub
'Psum统计员工人数
Function Psum()
Dim i As Integer
i = 0
Do While 1
    If Sheet2.Range("A" & Trim(Str(i + 1))) = "" Then
        Exit Do
    End If
    i = i + 1
Loop
Psum = i
End Function
'加载窗体
Sub LoadForm()
    '如果工作表sheet1中有数据显示第三行的记录
    totleRange = tRange
    '如果有记录
    If totleRange > 0 Then
        Flag = 3
        ViewRange (Flag)    '显示记录
    End If
    cmdFirst.Enabled = False
    cmdPrev.Enabled = False
    cmdNext.Enabled = False
    cmdLast.Enabled = False
    '当记录大于1条时
    If totleRange > 1 Then
        cmdNext.Enabled = True
        cmdLast.Enabled = True
    End If
    'cmdSave.Enabled = False
End Sub
'统计总记录数
Function tRange()
Dim i As Integer
i = 2
Do While 1
    If Sheet1.Range("A" & Trim(Str(i + 1))) = "" Then
        Exit Do
    End If
    i = i + 1
Loop
tRange = i - 2
End Function
'显示记录到窗体
Sub ViewRange(i As Integer)
    TextBox1.Text = Sheet1.Range("A" & Trim(Str(i))).Value      '日期
    ComboBox1.Value = Sheet1.Range("B" & Trim(Str(i))).Value    '操作员
    TextBox2.Text = Sheet1.Range("C" & Trim(Str(i))).Value      '流水号
    TextBox3.Text = Sheet1.Range("D" & Trim(Str(i))).Value      '产品名称
    TextBox4.Text = Sheet1.Range("E" & Trim(Str(i))).Value      '数量
    TextBox5.Text = Sheet1.Range("F" & Trim(Str(i))).Value      '单价
    TextBox6.Text = Sheet1.Range("G" & Trim(Str(i))).Value      '合计
    ComboBox2.Value = Sheet1.Range("H" & Trim(Str(i))).Value    '进货人
End Sub
提 示
上面的代码段中有四个过程,分别为Psum(统计员工总数)、LoadForm(加载窗体)、tRange(统计工作表中总记录数)、ViewRange(显示记录到窗体)。
(7)在【代码】编辑窗口中,分别为【数量】和【单价】框的Change事件,输入实现代码。
代码如下:
'数量的Change事件
Private Sub TextBox4_Change()
    '数量和单价不为空时,计算“合计”
    If TextBox4.Value <> 0 And TextBox5.Value <> 0 Then
        TextBox6.Value = Val(TextBox4.Value) * Val(TextBox5.Value)
    End If
End Subvba做excel窗体录入教程
'单价的Change事件
Private Sub TextBox5_Change()
'数量和单价不为空时,计算“合计”
    If TextBox4.Value <> 0 And TextBox5.Value <> 0 Then
        TextBox6.Value = Val(TextBox4.Value) * Val(TextBox5.Value)
    End If
End Sub
(8)在【代码】编辑窗口中,分别为按钮【首页】、【上一页】、【下一页】、【末页】的Click事件,输入实现代码。
代码如下:
'首条
Private Sub cmdfirst_Click()
    cmdPrev.Enabled = False
    cmdFirst.Enabled = False
    cmdNext.Enabled = True
    cmdLast.Enabled = True
    Flag = 3
    ViewRange (Flag)    '显示记录
End Sub
'上一条
Private Sub cmdPrev_Click()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。