[VBA]關於亂數與VBA語法的問題

看板Visual_Basic作者時間8年前 (2016/06/26 20:04), 8年前編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
大家好,最近小弟開始學VBA 在練習一些題目時遇到2個問題 剛好發現此版,希望版上有大大能不吝賜教,謝謝! 第一個問題 因為用EXCEL2013版 用WorksheetFunction.RandBetween() 在EXCEL2003版不適用 於是用Int(Rnd() * (Max - Min + 1))改寫後 發現亂數產生蠻固定的,大概每4~5個亂數就重新循環一次 但用WorksheetFunction.RandBetween 並無此問題! 不知版上大大有沒有遇過這個問題? 以下為擷取一段原始碼 Dim PlayerNum, Min As Integer, Max As Integer, GameTimes As Integer, GameTimeSet As Integer ', FinalCode As Integer If Min >= Max Then '輸入錯誤時 MsgBox "請注意有無輸入錯誤,再重新點選開始遊戲", vbInformation Exit Sub Else '輸入正確 FinalCode = WorksheetFunction.RandBetween(Min, Max) '在EXCEL2003使用Int(Rnd() * (Max - Min + 1)) 'MsgBox FinalCode End If 第2個問題是":="與"="兩者的差別? 原本寫TYPE=1,發現會有問題! 於是上網查詢之後,改成TYPE:=1,便能正常執行 EX: PlayerNum = Application.InputBox("請猜測終極密碼", "終極密碼", "EXIT", Type:=1 + 2) -- ※ 編輯: hink2003 (175.183.8.144), 06/26/2016 20:28:22

06/26 20:40, , 1F
:=只有用在指明引數名稱的函數呼叫裡面 其他地方沒用
06/26 20:40, 1F

06/26 20:41, , 2F
你以上的用法便是 這個場合也不可換成 =
06/26 20:41, 2F

06/27 19:45, , 3F
謝謝M大回覆!不知第一個問題有沒有人遇過!?
06/27 19:45, 3F

06/29 08:49, , 4F
呼叫Rnd前要加入Randomize MSDN:https://goo.gl/sGDe54
06/29 08:49, 4F

06/29 08:52, , 5F
另外可用Application.Version來判斷Excel版本
06/29 08:52, 5F
感謝C大分享,收穫甚多! ※ 編輯: hink2003 (175.183.8.144), 07/02/2016 19:32:28
文章代碼(AID): #1NRyItBR (Visual_Basic)
文章代碼(AID): #1NRyItBR (Visual_Basic)