VBA实验一
[实验目的]
1.掌握属性、事件和方法的应用。
2.熟练掌握和应用Access内置的应用方法。
3.掌握常量、变量的声明和使用。
4.掌握和熟练应用各种内置函数。
5.掌握VBA执行语句的3种结构:顺序结构、选择结构和循环结构。
6.熟练掌握和应用If语句、Select Case等选择结构语句。
7.熟练掌握和应用For……Next语句、Do While……Loop和Do Until……Loop等循环结
构语句。
[实验内容]
打开“教学管理”数据库,创建以下窗体。
1.在“教学管理”数据库中,设计一个“欢迎学习VBA”的窗体,标题为“欢迎”。
要求:新建一个窗体,放置7个按钮和一个文本框Text1及标题为“欢迎”的标签,并将7个命令按钮分别设为如图1.1所示。
图1.1 “欢迎学习VBA”的窗体
提示:打开表的方法为:DoCmd.OpenTable "表名"
关闭表的方法为:DoCmd.Close acTable, "表名"
打开窗体的方法为:DoCmd.OpenForm "窗体名"
关闭窗体的方法为:DoCmd.Close acForm, "窗体名"
2.在“教学管理”数据库中,设计一个“计算三角形面积”的窗体,用InputBox函数输
入三角形三边a、b、c,判断是否能构成三角形,能构成三角形,求出三角形的面积。
否则用MsgBox显示“不能构成三角形”的信息。计算公式如下:
P =( a + b + c )/ 2
S = sqr(p*(p-a)*(p-b)*(p-c))
要求:三角形的面积(保留三位小数)。界面设计如图1.2所示。
图1.2“计算三角形面积”的窗体
3.在“教学管理”数据库中,设计一个“模拟袖珍计算器”窗体,运行界面如图1.3所示。要求:
(1)输入两个操作数和一个算术运算符,根据算术运算符决定所做的运算。
(2)为了保证程序的正常运行,对输入的运算数和运算符需进行检验,如在规定范围以外(输入操作数非法、运算符非法或除数为零),利用MsgBox函数或过程显示出错误信息。(3)若输入错误,清除错的输入内容。
图1.3 “模拟袖珍计算器”窗体
4.在“教学管理”数据库中,设计一个“成绩评定”窗体,其中文本框中的成绩为“选课
成绩”表中的“成绩”值。
要求:当单击“评定”按钮,可以对文本框中的百分制“成绩”评定为五级制,即弹出标题为“成绩等级”,提示信息为(“不及格”或“及格”或“中等”或“良”或“优秀”)的等级制的消息框。窗体如图1.4所示。消息框如图1.5所示。
成绩等级标准:0-59为不及格,60-69为及格,70-79为中等,80-89为良好,90-100为优秀。
图1.4 成绩评定窗体
图1.5 消息框
5.用For循环和Do循环在文本框中每行输出一个10~10000之间被3除余2、被5除余3、
被7除余2的数,在标签框中输出其和及个数。若要求文本框每行输出5个数,如何修改程序?
6.编程计算由下列公式确定的S值,其中n是用户输入的正整数,n可由InputBox函数
或文本框输入。注意选用合适的变量类型,界面用户自行设计。
S=1+(1×2)+(1×2×3)+ … +(1×2×3×…×n)
参考代码
1.Private Sub Form_Load() '设置窗体标题
Me.Caption = "欢迎"
End Sub
Private Sub Command2_Click() '显示20磅黑体按钮
Text1.Value = "您好!欢迎您学习VBA"
Text1.FontSize = 20
Text1.FontName = "黑体"
End Sub
Private Sub Command3_Click() '清除按钮
Text1.SetFocus
Text1.Value = ""
End Sub
Private Sub Command4_Click() '关闭窗体按钮
DoCmd.Close acForm, "欢迎学习VBA"
'或者使用 docmd.close 表示关闭当前窗体
End Sub
Private Sub Command5_Click() '打开“学生”表按钮
DoCmd.OpenTable "学生"
End Sub
Private Sub Command6_Click() '关闭“学生”表按钮
DoCmd.Close acTable, "学生"
End Sub
Private Sub Command7_Click() '打开“选课成绩”窗体按钮DoCmd.OpenForm "选课成绩"
End Sub
Private Sub Command8_Click() '关闭“选课成绩”窗体按钮DoCmd.Close acForm, "选课成绩"
End Sub
2.Private Sub Command1_Click() '计算按钮
Dim a%, b%, c%, s!, c!
a = InputBox("输入a边的值")
b = InputBox("输入b边的值")
c = InputBox("输入c边的值")
Text0.Value = a '输出a边
Text2.Value = b '输出b边
Text4.Value = c '输出c边
If a + b > c And Abs(a - b) < c Then
p = (a + b + c) / 2
s = Sqr(p * (p - a) * (p - b) * (p - c))
Text6.Value = Format(s, "0.00") '输出面积保留三位小数 Else
MsgBox "不能构成三角形"
Text0.Text = ""
Text2.Text = ""
Text4.Text = ""
Text1.SetFocus
End If
End Sub
Private Sub Command5_Click() '清除按钮
Text0.Text = ""
Text2.Text = ""
Text4.Text = ""
Text6.Text = ""
End Sub
Private Sub Command6_Click() '退出按钮
DoCmd.Quit
End Sub
3.Private Sub Command8_Click() '计算按钮
Dim a%, b%, c$, d!
a = Val(Text0.Value)
b = Val(Text2.Value)
c = Text4.Value
Select Case c
Case "+"
d = a + b
Case "-"
d = a - b
Case "*"
d = a * b
Case "/"
If b = 0 Then
MsgBox "零为非法数,重新输入!", 16
Text2.Value = ""
Else
d = a / b
End If
Case Else
MsgBox "运算符有错,重新输入!", 16, "出错信息"
Text4 = ""
End Select
Text6.Value = d
End Sub
Private Sub Command9_Click() '清除按钮
Text0.Value = "": Text2.Value = ""
Text4.Value = "": Text6.Value = ""
End Sub
Private Sub Command10_Click() '关闭按钮
DoCmd.Close '表示关闭当前窗体
End Sub
4.'首先把“选课成绩”表中的“成绩”字段添加到“成绩评定”窗体上
Private Sub Command2_Click() '评定按钮
Dim score%
score = 成绩.Value '文本框的名称为“成绩”
Select Case score
Case 90 To 100
MsgBox "优秀", , "成绩等级"
Case 80 To 89
MsgBox "良好", , "成绩等级"
Case 70 To 79
MsgBox "中等", , "成绩等级"
Case 60 To 69
MsgBox "及格", , "成绩等级"
Case Else
MsgBox "不及格", , "成绩等级"
End Select
End Sub
5.Private Sub Command2_Click() 'For循环结构
Dim i%, sum&, count%
count = 0
sum = 0
For i = 10 To 10000
If i Mod 3 = 2 And i Mod 5 = 3 And i Mod 7 = 2 Then
Text0.Value = Text0.Value & i & vbCrLf '每行输出一个数,vbCrLf为换行符 count = count + 1 'count计数变量+1
sum = sum + i '符合条件的i累加到sum中
End If
Next i
Label1.Caption = "和为:" & sum & "个数为:" & count
End Sub
Private Sub Command3_Click() 'Do循环结构
Dim i%, sum&, count%
i = 10: count = 0: sum = 0
Do While i <= 10000
If i Mod 3 = 2 And i Mod 5 = 3 And i Mod 7 = 2 Then
Text0.Value = Text0.Value & i & vbCrLf '每行输出一个数,vbCrLf为换行符 count = count + 1 'count计数变量+1
sum = sum + i '符合条件的i累加到sum中
End If
i = i + 1
Loop
Label1.Caption = "和为:" & sum & "个数为:" & count
End Sub
Private Sub Command4_Click() 'For循环结构
Dim i%, sum&, count%
count = 0
sum = 0
For i = 10 To 10000
If i Mod 3 = 2 And i Mod 5 = 3 And i Mod 7 = 2 Then
Text0.Value = Text0.Value & i & Space(5) '每行输出5个数,Space(5) 表示数与数之间相距5个空格
count = count + 1 'count计数变量+1
sum = sum + i '符合条件的i累加到sum中
If count Mod 5 = 0 Then Text0.Value = Text0.Value & vbCrLf
End If
Next i
Label1.Caption = "和为:" & sum & "个数为:" & count
End Sub
6.Private Sub Command2_Click() '计算按钮
Dim s&, n%, i%, t%, L%
s = 0
n = InputBox("输入一个正整数作为多项式的项数")
t = 1
For i = 1 To n
t = t * i '求阶乘
s = s + t '求和
Next i
Text0.Value = "S=1+(1×2)+(1×2×3)+……+(1×2×3×……×N)=" & s
End Sub