VBA编程综合答案Word文件下载.docx
- 文档编号:21707599
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:247.46KB
VBA编程综合答案Word文件下载.docx
《VBA编程综合答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《VBA编程综合答案Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
(3)整形变量Score存放分数,StrX字符串用于显示等级
(4)窗体保存名为:
M21
DimScoreAsInteger,StrXAsString
SelectCaseScore
Case0To59
StrX="
不及格"
Case60To69
及格"
Case70To79
中"
Case80To89
良"
Case90To100
优"
EndSelect
Label3.Caption="
StrX
12007
计算
的值。
本题使用模块过程函数实现
(1)函数名为FC,私有类
(2)选择结构采用If……Else……Endif结构
(3)x用于接受用户输入值,y用来存放输出值
PrivateSubFC()
DimxAsDouble,yAsDouble
x=Val(InputBox("
请输入x的值:
))
Ifx<
=0Then
y=x^2+x+1
Else
y=x^2+4*x-2
MsgBox"
y的值是:
12011
编程实现输入一个整数X,能判别其是否为素数。
素数又称质数。
指只能被1和自身整除的自然数。
注意:
(1)使用模块过程函数实现,函数名为prime,为私有函数。
(2)使用I,N整形变量,其中N为用户输入的数,I为循环计数器
(3)循环结构采用For……next形式
(4)效果如图所示,模块最后保存为:
M-24
PrivateSubprime()
DimIAsInteger,NAsInteger
N=InputBox("
请输入N:
)
ForI=2ToN-1
IfNModI=0ThenExitFor
NextI
IfI>
=NThen
MsgBoxN&
"
是素数"
不是素数"
12010
编程实现输入一个正数M(M≥1),能输出1~M间3的倍数,以及倍数和。
(1)通过模块子函数实现,子函数名为trad,私有类型
(2)定义M,N,S整型变量,M为用户输入的数,N为循环计数器,S存放倍数和
定义K为字符串变量,用于存放显示1~M间3的倍数
(3)循环主体采用DoWhile……loop结构
(4)其中每个能被3整除的数之间用"
"
隔开如图所示。
(5)模块保存名字为M-23
PrivateSubtrad()
DimMAsInteger,NAsInteger,SAsInteger
DimKAsString
N=0
M=0
M=InputBox("
请输入M的值:
DoWhileN<
M
IfNMod3=0Then
K=K+Str(N)&
S=S+N
N=N+1
Loop
1到M间3的倍数为:
K&
它们的和为"
S
M=Val(InputBox("
=M
K=K&
N&
12009
计算表达式
分析可知表达式的通项公式为:
(1)界面设计。
窗体放置2个标签,分别显示表达式及结果;
放置1个命令按钮,用于启动计算过程。
(2)属性设置,如图所示。
属性设置
属性对象
名称
标题
标签控件
lblProblem
S=1/2!
-3/4!
+5/6!
-7/8!
+9/10!
lblResult
计算结果是
命令按钮
cmdCompute
(3)程序代码:
PrivateSubcmdCompute_Click()
DimSAsSingle
DimiAsInteger,kAsSingle
DimfAsLong
S=0
Fori=1To5
f=1
Fork=1To2*i
f=f*k
Nextk
S=S+(-1)^(i-1)*(2*i-1)/f
Nexti
lblResult.Caption=lblResult.Caption+Format(S,"
0.0000"
(3)调试运行,最后命名并保存窗体名为:
累加计算。
12008
编写程序,对用户输入的10个数分别统计有几个奇数,有几个偶数。
(1)子函数名为count,
(2)整形变量i,j分别存放偶数和奇数的个数,
(3)变量x存放输入框接收的用户输入数字,
(4)循环结构采用for……nextn结构
(5)vbCRLf为消息框中的换行命令
(6)模块名保存为M-23
PrivateSubcount()
DimiAsInteger,jAsInteger,nAsInteger
i=0
j=0
Forn=1To10
请输入一个数:
IfxMod2=0Then
i=i+1
j=j+1
Nextn
偶数有个数是:
i&
vbCrLf&
奇数个数是:
j
12012
用Do……Loop判断条件,求100以内自然数和,主要使用Until为判断条件
(1)模块名为M44,过程添加函数summary实现
(2)定义整形变量s,n其中s用了存放和,n用来做计数器
PrivateSubsummary()
DimsAsInteger,nAsInteger
s=0
n=1
DoUntiln>
100
s=s+n
n=n+1
100以内自然数的和是:
s
12013
求自然数n的阶乘
(1)使用模块插入过程子函数fact实现
(2)模块保存为M45
PrivateSubfact()
DimkAsDouble,iAsInteger,nAsInteger
n=Val(InputBox("
请输入n的值:
k=1
Fori=1Ton
k=k*i
Nexti
MsgBoxn&
的阶乘值为:
k
VB+VBA考试题型及比例:
1.VBA部分占30%左右
2.考试题型(选择20-25%,程序填空25-30%,程序阅读20%,编程30%)
VBA——模块中的宏(Sub过程)和Function函数:
设计与使用
例:
Subseries()'
求Fibonacci数列
Dimfib(1To30)AsLong
DimiAsInteger
fib
(1)=1
fib
(2)=1
Fori=3To30
fib(i)=fib(i-1)+fib(i-2)
Nexti
Fori=1To30
Worksheets("
Sheet1"
).Range("
A"
+CStr(i))=fib(i)
——上机练习2)编制函数age,从身份证号中计算出年龄。
在VBA中使用EXCEL工作表函数
【例6-7】使用Min工作表函数求出单元格区域“A1:
C10”中的最小值。
DimanswerAsSingle,myRAsRange
SetmyR=Worksheets("
A1:
C10"
answer=Application.WorksheetFunction.Min(myR)
MsgBoxanswer
【例6-8】计算位于A1~A100单元格区域中的、值大于等于10且小于等于20的单元格数目。
SetiRang=Worksheets("
A100"
result=.Countif(iRange,"
>
=10”)-.Countif(iRange,"
”&
20)
EndWith
Subgenerate()‘生成随机数
Worksheets("
sheet1"
).Formula="
=Int(Rand()*90+10)"
VBA程序设计:
常用属性、方法、事件过程
对象(多级):
Application、Workbooks、*Worksheets、**Range
方法:
Cells(1,1)=Application.InputBox(“输入姓名:
”)
’清除Sheet1的全部单元格的内容
Worksheets("
).Cells.ClearContents
常用属性:
Cells(i,j)、ActiveCell
Selection、ActiveSheet、ActiveCell
UsedRange、CurrentRegion
引用单元格和区域
SubApplyColor()‘遍历
Constlimit=30
DimcAsRange
ForEachcInRange("
AA"
)
Ifc.Value>
limitThenc.Interior.ColorIndex=3
Next
SubUnderline()‘相对引用
ActiveCell.Offset(1,3).Font.Underline=xlDouble
SubObjectVar()’用Range对象引用
DimwrAsRange
Setwr=Worksheets
(1).Range("
D5"
Withwr
.Formula="
=Rand()"
.Font.Bold=True
EndWith
在单元格区域中循环
Fori=1To20
Setcurc=Worksheets("
).Cells(i,3)
curc.Font.ColorIndex=0
IfAbs(curc.Value)<
10Thencurc.Font.ColorIndex=3
ForEachcInWorksheets("
D10"
).Cells
IfAbs(c.Value)<
10Thenc.Font.ColorIndex=3
Next
‘如果不知道循环的区域边界
ForEachcIn
选定和激活单元格
常用方法:
选中区域Select、激活单元格Activate
Subabc()
Range("
B1"
).Select
Selection.Font.Bold=True
Endsub
处理活动单元格:
[例7-38]
Subregion()
).Activate
.Select
工作表上加控件,简单的用户窗体UserForm
标签、命令按钮、文本框、列表框等
常用事件(教材P.272程序设计题)
Workbook_Open()
Workbook_BeforeClose()
Worksheet_selectionchang()
Worksheet_chang()
PrivateSubWorkbook_Open()‘写入一些只需执行一次的代码
EndSub
注:
对系统进行设置的代码一般不写在这里,而写入Workbook_Activate事件中。
SubWorkbook_BeforeClose(CancelasBoolean)‘本事件常用于关闭前的数据检查
Ifrange(“B11”).value=“”Then’假设B11为合计数所在的单元格
Cancel=True
MsgBox“合计数不能为空,不允许关闭!
”
Endif
VB特点
面向对象程序设计的思想——事件触发驱动
VB编程环境
既可编译执行,又可解释执行
VB文件类型
.vbp.frm.bas.exe
VB控件
通用属性NameCaptionEanbledVisible
Left,Top,Width,Height(位置、大小)
Backcolor,Forecolor,FontName,FontSize,FontBold
主要属性
主要方法
主要事件
窗体Form
Me.Caption=”MyWindow”
Printclsmove
Load()装载/启动
Click()
command
Caption
例:
Command1.Caption=“OK(&
X)”‘Alt+x键
标签框label
CaptionAutoSizeAlignment
输出:
label1.caption=str(x%)+”kg”
文本框text
textlocked
MultiLine(chr(13)+chr(10))
ScrollbarPasswordChar
‘输入:
x=val(text2.text)
‘输出text2.text=str(123)+”kg”
事件:
text1_Change()
Subtext1_KeyPress(KeyAsciiAsInteger)
ifkeyascii<
48orkeyascii>
57thenkeyascii=0
ifkeyascii=13then
….
Endif
EndSub
程序框架*:
变量声明、数据初始化(赋初值)
数据输入(键盘输入、随机产生、文本框输入)
数据计算/处理
结果输出(窗体输出、标签框显示、MsgBox)
程序中的特殊的语句形式*
计数器i=i+1i=0
累加器s=s+xs=0
累积器p=p*xp=1
累除器x=x/10
标记器f=1/f=0f=true/f=false
正负号变换器t=-tt=-1/1
跟踪器p=i
变量交换t=a:
a=b:
b=t
变量转移x1=x2:
x2=x3:
x3=x1+x2
终止标记x=-1111(x=9999)
●
数组的定义optionbase0|1
dimx(100)assingle
dimx(1to100)asstring
dimy(3,4)asinteger
动态数组的概念
dima()asinteger
n=inputbox(“n=”)
redima(n)
●数组的使用(重点复习)
数组初始化、输入/输出、
数组处理:
求平均值、最大值、排序*(程序填空)、插入/删除(程序阅读P.149[4-16])
数组输出:
fori=1to100
printa(i);
ifimod10=0thenprint
nextI
二维数据的数据输出:
fori=1to10
forj=1to10
printa(i);
nextj
nextI
直接选择排序法
fori=1ton-1
forj=i+1ton
ifa(i)<
a(j)thent=a(i):
a(i)=a(j):
a(j)=t
nextj
选择排序法
Fori=1Ton-1
t=i‘设下标i的元素值最小
Forj=i+1Ton
Ifa(j)<
a(t)Thent=j
Nextj
Ift<
iThen‘若a(i)不是最小,则交换位置
min=a(t):
a(t)=a(i):
a(i)=min
EndIf
●自定义过程sub与函数function(重点复习)
过程(按地址byref和按值byval传递)
函数(返回值 fn=要返回的值)(重点准备)
数组作参数必须按地址传递
过程sub与函数function的编程应用示例
1.编写函数:
求阶乘(P.187上机练习题2)、判断一个数是否为素数63例5-2、5-3)、
计算Single类型一维数组所有元素的平均值6程序设计题1)
2.编制过程mn,求integer类型一维数组中的最大值/最小值71例5-9,P.176例5-13)。
种类
表示形式
数据类型
基本类型
Byte、Integer(2B)、Long(4B)、Single(4B)、Double(8B)、Currency(8B)
String、Boolean(2B)、Date(8B)、Variant(16B)
常量
直接常量
由其“书写”方式决定,例:
、!
、&
O16、&
HA9、“A9”、true
符号常量
Const<
符号常量>
=<
表达式>
[As类型]例:
ConstMyABC=“EnjoyVB!
变量
变量命名
<
字母>
[<
|<
数字>
下划线>
]注:
不能与关键字同名
变量声明
Dim变量名As类型[,变量As类型,……]
DimiAsInteger(等价Dimi%)或:
DimxAsInteger,yAsDouble
DimnameAsString*4
变量作用域
过程级变量Dim语句位于Sub过程内部、Static静态变量(值保留)
模块级变量Dim语句位于“通用”声明处(☞两次调用期间变量值保留不变)
函数
数学函数
Int()、Sqr()、Exp()、Log()、Sin(30*3.14/180)、Int(Rnd*(最大值-最小值+1)+最小值)
字符函数
Len()、Mid(s,Len(s),n)、Right(s,n)、Trim()、Ucase()、String()、InStr()
转换函数
Str()/Val()、Chr(Asc(“D”)+1)、CStr()
其他函数
Tab()、Spc()、Space()、Rgb()、Qbcolor()、Time、Date、Now
运算符
算术运算符
^、*、/、Mod、\、+、-
字符运算符
+、&
”ZUCC”+Str(2009)、”ZUCC”&
2009注:
连接方向
关系运算符
=、<
、>
、>
、<
=
逻辑运算符
Not、And、Or
控制结构
顺序结构
变量=表达式例:
x=x+1、y=x
选择结构
If<
条件1>
Then
语句块1
[ElseIf<
条件2>
语句块2
……
语句块n+1]
SelectCase<
测试表达式>
Case<
表达式值1>
语句块1
[Case<
表达式值2>
语句块2
CaseElse
语句块n+1]
EndSelect
循环结构
For循环控制变量=初值To终值[Step步长]
语句块
Next循环控制变量
Do[While|Until<
条件>
]
Loop[While|Until<
]
While<
Wend
输入/输出
输入函数
InputBox(“提示信息”)例:
x=Val(InputBox(“x=”))
输出函数
Msgbox(“提示信息”)例:
n=Msgbox(“确定吗?
输出方法
Print变量列表等或:
Msgbox“提示信息”
常见算法程序设计
(思路)
简单算法
计数(计数器i=i+1)
整数的分解、进制转换
求和(累加器s=s+x‘初值s=0,累积器p=p*x‘初值p=1)、平均值*
比较大小(求极值*)、判断(“素数”问
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 编程 综合 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)