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小时内删除。
发表评论