第一范文网 - 专业文章范例文档资料分享平台

第9章 模块与VBA程序设计 - 习题

来源:用户分享 时间:2025/6/4 6:08:25 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

第9章 模块与VBA程序设计_习题

一、选择题

1.模块是存储代码的容器,其中窗体就是一种( )。A

A.类模块 B.标准模块 C.子过程 D.函数过程 2.使用Dim声明变量,若省略“As类型”,则所创建的变量默认为( )。C A.Integer B.String C.Variant D.不合法变量 3.函数Len(\数据库\的值是( )。A

A.9 B.12 C.15 D.18

4.函数Right(Left(Mid(\Access_DataBase\,10,3),2),1)的值是( )。A A.a B.B C.t D.空格 5.在下列逻辑表达式中,能正确表示条件“m和n至少有一个为偶数”的是( )。C

A.m Mod 2 = 1 Or n Mod 2 = 1 B.m Mod 2 = 1 And n Mod 2 = 1 C.m Mod 2 = 0 Or n Mod 2 = 0 D.m Mod 2 = 0 And n Mod 2 = 0 6.语句Select Case x 中,x为一整型变量,下列Case语句中,表达式错误的是( )。D

A.Case Is > 20 B.Case 1 To 10 C.Case 2, 4, 6 D.Case x > 10 7.Sub过程和Function过程最根本的区别是( )。A

A.Sub过程的过程名不能返回值,而Function过程能通过过程名返回值 B.Sub过程可以使用Call语句或直接便用过程名,而Function过程不能 C.两种过程参数的传递方式不同

D.Function过程可以有参数,Sub过程不能有参数

8.VBA中用实参x和y调用有参过程PPSum(a, b)的正确形式是( )。B

A.PPSum a, b B.PPSum x, y C.Call PPSum(a, b) D.Call PPSum x, y 9.在VBE的立即窗口输入如下命令,输出结果是( )。B

x=4=5 ? x

A.True B.False C.4=5 D.语句有错 10.程序调试的目的在于( )。D

A.验证程序代码的正确性 B.执行程序代码

C.查看程序代码的变量 D.查找和解决程序代码的错误 二、填空题 1.在VBA中,要得到[15,75]区间的随机整数,可以用表达式________。Int(Rnd*61+15) 2.定义了二维数组A(2 to 5, 5),则该数组的元素个数为 。24

3.VBA中变量作用域分为3个层次,这3个层次的变量是________、________和________。局部变量,模块变量,全局变量

4.VBA的有参过程定义,形参用________说明,表明该形参为传值调用;形参用ByRef说明,表明该形参为________。ByVal,传地址调用

5.有如下VBA代码,运行结束后,变量n的值是 ,变量i的值是 。12,4

n=0

For i=1 To 3 For j=-4 To -1

1

n=n+1 Next j Next i

6.设有以下窗体单击事件过程:

Private Sub Form_Click()

a=1

For i=1 To 3 Select Case i Case 1,3 a=a+1 Casw 2,4 a=a+2 End Select Next i MsgBox a End Sub

打开窗体运行后,单击窗体,则消息框的输出内容是________。5

7.进行ADO数据库编程时,用来指向查询数据时返回的记录集对象是 。RecordSet

8.RecordSet对象有两个属性用来判断记录集的边界,其中,判断记录指针是否在最后一条记录之后的属性是 。EOF

三、问答题

1.在Access中,既然已经提供了宏操作,为什么还要使用VBA?

答:在Access中宏提供的是常用的一些操作,但未包含所有操作。用户在表示一些自我需要的特定操作时,仍需使用VBA代码编写其操作。

2.什么是类模块和标准模块?它们的特征是什么?

答:类模块是与类对象相关联的模块,所以也称为类对象模块。类模块是可以定义新对象的模块。新建一个类模块,表示新创建了一个对象,通过类模块的过程可定义对象的属性和方法。Access的类模块有3种基本形式:窗体类模块、报表类模块和自定义类模块。

标准模块是指可在数据库中公用的模块,模块中包含的主要是公共过程和常用过程,这些公用过程不与任何对象相关联,可以被数据库的任何对象使用,可以在数据库的任何位置执行。常用过程是类对象经常要使用的过程,需要多次调用的过程。一般情况下,Access中所说的模块是指标准模块。

类模块一般用于定义窗体、报表中某个控件事件的响应行为,常通过私有的过程来定义。类模块可以通过对象事件操作直接调用。

标准模块一般用来定义数据库、窗体、报表中多次执行的操作,常通过公有的过程来定义,标准模块通过函数过程名来调用。

3.什么是形参和实参?过程中参数的传递有哪几种?它们之间有什么不同?

答:过程或函数声明中的形式参数列表简称形参。形参可以是变量名(后面不加括号)或数组名(后面加括号)。如果子过程没有形式参数,则子程序名后面必须跟一个空的圆括号。

过程或函数调用时,其实际参数列表简称为实参,它与形式参数的个数、位置和类型必须一一对应,调用时把实参的值传递给形参。

在VBA中实参与形参的传递方式有两种:引用传递和按值传递。

2

在形参前面加上ByRef关键字或省略不写,表示参数传递是引用传递方式,引用传递方式是将实参的地址传递给形参,也就是实参和形参共用同一个内存单元,是一种双向的数据传递,即调用时实参将值传递给形参,调用结束由形参将操作结果返回给实参。引用传递的实参只能是变量,不能是常量或表达式。

在形参前面加上ByVal关键字时,表示参数是按值传递方式,是一种单向的数据传递。即调用时只能由实参将值传递形参,调用结束后不能由形参将操作结果返回给实参。实参可以是常量、变量或表达式。

4.编写程序,要求输入一个3位整数,将它反向输出。例如输入123,输出为321。 答:

在Access中设计的窗体如上图所示,转换命令按钮的单击事件代码如下: Private Sub cmd_convert_Click()

Dim v_result As String '结果变量 v_result = \

If Not IsNumeric(Text0.Value) Then MsgBox \输入的不为数值!\ Exit Sub End If

If Len(Text0.Value) <> 3 Then MsgBox \输入的不为3位数!\

End If

For i = 1 To 3

v_result = v_result & Mid(Text0.Value, 3 - i + 1, 1) Next i

MsgBox \结果:\

End Sub

5.利用IF语句求3个数X、Y、Z中的最大数,并将其放入MAX变量中。 答:VBA代码如下:

Private Sub Command1_Click()

x = InputBox(\请输入第一个数x的值\请输入需比较的数\ max = x

y = InputBox(\请输入第二个数y的值\请输入需比较的数\ If y > max Then max = y

z = InputBox(\请输入第三个数z的值\请输入需比较的数\ If z > max Then max = z

Me.Text1.Value = Str(x) & \ Me.Text3.Value = max

3

End Sub

6.使用Select Case结构将一年中的12个月份,分成4个季节输出。 答:VBA代码如下: Private Sub Form_Load() Me.Text1.Value = \ End Sub

Private Sub Command5_Click() Me.Text1.Value = \

m% = InputBox(\请输入欲判断季节的月份的值\注意:只可为1-12之间的整数\ Select Case m Case 2 To 4 ' 春季

Me.Label2.Caption = Trim(Str(m)) & \月份的季节为\ Me.Text1.Value = \春季\ Case 5 To 7 '夏季

Me.Label2.Caption = Trim(Str(m)) & \月份的季节为\ Me.Text1.Value = \夏季\ Case 8 To 10 '秋季

Me.Label2.Caption = Trim(Str(m)) & \月份的季节为\ Me.Text1.Value = \秋季\ Case 11 To 12, 1

Me.Label2.Caption = Trim(Str(m)) & \月份的季节为\ Me.Text1.Value = \冬季\ Case Else '无效的月份

Me.Text1.Value = \输入的是无效的月份\ End Select End Sub

7.求100以内的素数。 答:VBA代码如下:

Private Sub Command1_Click() Dim m As String Me.Text1.Value = \ m = \

For i% = 3 To 99 Step 2 For j% = 2 To i - 1 Lx% = i Mod j If Lx = 0 Then Exit For End If Next

If j > i - 1 Then

m = m + \ End If Next

Me.Text1.Value = m

4

End Sub

8.利用ADO对象,对“教学管理”数据库的“课程”表完成以下操作: (1)添加一条记录:“Z0004”,“数据结构”,“必修”,1。

(2)查找课程名为“数据结构”的记录,并将其学分更新为3。 (3)删除课程号为“Z0004”的记录。 答:(1)在教学管理数据库中,添加一条记录的过程如下。

Sub AddRecord(kc_hao As String, kc_name As String, kc_class As String, kc_score As Integer)

Dim rs As New ADODB.Recordset Dim conn As New ADODB.Connection On Error GoTo GetRS_Error

Set conn = CurrentProject.Connection '打开当前连接 rs.Open strSQL, conn, adOpenKeyset, adLockOptimistic rs.AddNew

rs.Fields(\课程号\ rs.Fields(\课程名\ rs.Fields(\课程类别\ rs.Fields(\学分\ rs.Update

Set rs = Nothing Set conn = Nothing End Sub

(2)查找课程名为“数据结构”的记录,并将其学分更新为3。其代码实现如下: Sub ExecSQL()

Dim conn As New ADODB.Connection

Set conn = CurrentProject.Connection '打开当前连接

strsql = \课程 set 学分=3 where 课程名='数据结构'\ conn.Execute (strsql) Set conn = Nothing End Sub

(3)删除课程号为“Z0004”的记录。其实现方法只需将ExecSQL()过程中的SQL语句改为:strsql = \课程 where 课程号='Z0004'\

5

搜索更多关于: 第9章 模块与VBA程序设计 - 习题 的文档
第9章 模块与VBA程序设计 - 习题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6yb9c8l2dc7f1wk0kidw_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top