VBA程序教学用例
【例1】求解一元二次方程Ax+Bx+C=0。 顺序结构的VBA程序: SUB JFC1()
A = Sheets(\解一元二次方程\
B = Sheets(\解一元二次方程\C = Sheets(\解一元二次方程\
X1=(-B+SQR(B^2-4*A*C))/2/A X2=(-B-SQR(B^2-4*A*C))/2/A DEBUG.PRINT “X1=”,X1 DEBUG.PRINT “X2=”,X2 END SUB 提示:先将三个系数A、B、C存放到表\解一元二次方程\的单元格B1:B3中,运行结果在立即窗口中(可用CTRL+G组合键打开立即窗口)。
带判断条件的VBA程序: Sub JFC2()
A = Sheets(\解一元二次方程\B = Sheets(\解一元二次方程\C = Sheets(\解一元二次方程\If B * B - 4 * A * C >= 0 Then
Sheets(\解一元二次方程\ Sheets(\解一元二次方程\ Else
Sheets(\解一元二次方程\此方程无实根\ Sheets(\解一元二次方程\此方程无实根\End If End Sub
提示:先将三个系数A、B、C存放到表\解一元二次方程\的单元格B1:B3中,运行结果在B4:B5中)。
2【例2】给定成绩数据在表sheet2中,求最高分、最低分和平均分。 (1)程序流程总图
开 始 输入N;第一个数到MA 输入下一个数到X X>MA? N Y X→MA N-1次已完成? N Y 输出结果MA 结 束
“打擂法”求最大的算法流程
开 始 输入N;0→P 输入一个数到X 将X累加到P N个成绩累加完? N Y P/N→P 输出P 结 束 求N个数平均值的算法流程
(2)VBA程序 Sub CJTJ()
X = Sheets(\成绩统计\ MA = X MI = X P = 0 I = 2
Do While Sheets(\成绩统计\ X = Sheets(\成绩统计\ P = P + X
If X > MA Then MA = X If X < MI Then MI = X I = I + 1 Loop
P = P / (I - 2)
Sheets(\成绩统计\最高分\ Sheets(\成绩统计\
Sheets(\成绩统计\最低分\ Sheets(\成绩统计\
Sheets(\成绩统计\平均分\ Sheets(\成绩统计\End Sub
思考题:如果要在CJTJ程序中增加计算标准差功能,程序该如何修改?