[VBA ] 求救 關於連續加法的程式

看板Visual_Basic作者 (U)時間14年前 (2011/04/09 23:24), 編輯推噓0(005)
留言5則, 1人參與, 最新討論串1/1
老師雖然只要求我們寫出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

04/09 23:33, , 1F
(1)dim寫錯了,要寫dim a as integer, b as integer
04/09 23:33, 1F

04/09 23:34, , 2F
不然他就當variant處理
04/09 23:34, 2F

04/09 23:35, , 3F
(2)整數判斷使用isnumeric()
04/09 23:35, 3F
感謝您~~我這就去試試 另外用variant會對數字運算造成什麼影響嗎? 還有isnumeric()不是只能判斷是否為數值嗎? 它可以用來分整數跟小數嗎? ※ 編輯: u19901006 來自: 140.112.240.122 (04/09 23:41)

04/11 09:21, , 4F
……那你可以用instr()找看裡面有沒有小數點
04/11 09:21, 4F

04/11 09:21, , 5F
variant對數字運算的影響就是如你碰到的,當字串處理。
04/11 09:21, 5F
文章代碼(AID): #1De7eTtS (Visual_Basic)