2 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
暈,這是你自己寫的嗎?怎么用While、Return、Wend這些偏冷門的東東啊,最讓人不可理解的是,While True,這不是死循環(huán)了嗎,While后面跟著的應(yīng)該是個(gè)判斷語句,True時(shí)循環(huán),F(xiàn)alse時(shí)退出循環(huán)。
GoSub...Return 語句
在一個(gè)過程中跳到另一個(gè)子程序中執(zhí)行,執(zhí)行后再返回。
語法
GoSub line
...
line
...
Return
必要的 line 參數(shù)可以是任何行標(biāo)簽或行號(hào)。
說明
可以在過程中的任何地方使用 GoSub 和 Return,但是 GoSub 和與之相應(yīng)的 Return 語句必須放在同一個(gè)過程中。一個(gè)子程序中可以包含一個(gè)以上的 Return 語句,但是當(dāng)碰到第一個(gè) Return 語句時(shí),程序就會(huì)返回到緊接在剛剛執(zhí)行的 GoSub 語句之后的語句繼續(xù)執(zhí)行。
注意 不能使用 GoSub...Return 來進(jìn)入或退出 Sub 過程。
提示 創(chuàng)建分開的過程,并使用 GoSub...Return 來調(diào)用,可以使程序更具結(jié)構(gòu)化。
GoSub...Return 語句示例
本示例使用 GoSub 來調(diào)用子過程里的一段子程序。Return 語句則將執(zhí)行返回到 GoSub 的下一個(gè)語句。Exit Sub 語句則是用來避免控制意外進(jìn)入該子程序的情形發(fā)生。
Sub GosubDemo()
Dim Num
' 請(qǐng)求用戶輸入一個(gè)數(shù)字。
Num = InputBox("Enter a positive number to be divided by 2.")
' 如果用戶輸入一個(gè)正整型,則使用子程序。
If Num > 0 Then GoSub MyRoutine
Debug.Print Num
Exit Sub ' 使用 Exit 命令來避免錯(cuò)誤發(fā)生。
MyRoutine:
Num = Num/2 ' 將數(shù)除以 2。
Return ' 將控制返回 GoSub 之后的語句。
End Sub

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
Public Function TentoFifteen(src As Long) As String
Application.Volatile
If Not (IsNumeric(src)) Then TentoFifteen = "#src": Exit Function
Dim dest As String, result As Long
Do While True
result = src Mod 15
src = (src - result) / 15
dest = IIf(result < 10, result, Chr(64 + result)) & dest
If src = 0 Then TentoFifteen = dest: Exit Do
Loop
End Function
------------
你的程序中,可能的錯(cuò)誤:
1、Return 是C語言里面的吧?VB里面有 GoSub...Return 語句 ,不是你的用法
2、Dec2Hex()函數(shù)是工程函數(shù),需要加載 分析工具庫 ,也就是說,是別人做的工程函數(shù),盡量不要使用
3、dest = WorksheetFunction.Dec2Hex(result) + dest
當(dāng)前面的數(shù)值計(jì)算出來是 數(shù)字,而不是字母時(shí),會(huì)計(jì)算出和值,最好使用 & 連字符
4、IsNumber(src) 判斷是否數(shù)字,VBA中有自己的函數(shù) IsNumeric(src)
- 2 回答
- 0 關(guān)注
- 114 瀏覽
添加回答
舉報(bào)