作者u19901006 (U)
看板Visual_Basic
标题[VBA ] 求救 关於连续加法的程式
时间Sat Apr 9 23:24:10 2011
老师虽然只要求我们写出1加到n即可 但我想试试更好的版本
结果就出问题了 请板上先进指点一下迷津:)
这个程式主要是可以指定由A连加到B 另外当输入值非整数时可以拒绝运作
程式码不长 如下:
Option Explicit
Sub 连续加法() '为该程式命名
Dim A, B, i, ans As Integer
MsgBox ("这是一个简单的小程式,只要输入A、B两数,
就能自动算出由A连续加到B的答案喔!")
ans = 0
Do While ans = 0
A = InputBox("请输入A") '要求使用者输入变数n
If Fix(A) - A = 0 Then
B = InputBox("请输入B") '要求使用者输入变数n
If B - Fix(B) = 0 Then
ans = (A + B)*(B-A+1)/2
Else: MsgBox ("要输入整数才行!请重新输入!")
End If
Else: MsgBox ("要输入整数才行!请重新输入!")
End If
Loop
MsgBox ("由" & A & "加到" & B & "的答案为" & ans) '显示答案
End Sub
问题在於计算答案的部份 原本的(A+B)*(B-A+1)/2 在最初是可以使用的
可是加了Do Loop、If 之後却算不出来了
後来发现是(A+B)出了问题 当A=1 B=10
出来的数不是11 而是110
它好像把数字当成字串一样加在一起 为什麽会这样?
我想了好久也想不通= = 还请高手指点
P.S:判断输入值是否为整数的地方 是否有更好的作法?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.240.122
1F:→ MOONRAKER:(1)dim写错了,要写dim a as integer, b as integer 04/09 23:33
2F:→ MOONRAKER:不然他就当variant处理 04/09 23:34
3F:→ MOONRAKER:(2)整数判断使用isnumeric() 04/09 23:35
感谢您~~我这就去试试
另外用variant会对数字运算造成什麽影响吗?
还有isnumeric()不是只能判断是否为数值吗? 它可以用来分整数跟小数吗?
※ 编辑: u19901006 来自: 140.112.240.122 (04/09 23:41)
4F:→ MOONRAKER:……那你可以用instr()找看里面有没有小数点 04/11 09:21
5F:→ MOONRAKER:variant对数字运算的影响就是如你碰到的,当字串处理。 04/11 09:21