2 回答

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

TA貢獻1827條經(jīng)驗 獲得超9個贊
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
------------
你的程序中,可能的錯誤:
1、Return 是C語言里面的吧?VB里面有 GoSub...Return 語句 ,不是你的用法
2、Dec2Hex()函數(shù)是工程函數(shù),需要加載 分析工具庫 ,也就是說,是別人做的工程函數(shù),盡量不要使用
3、dest = WorksheetFunction.Dec2Hex(result) + dest
當(dāng)前面的數(shù)值計算出來是 數(shù)字,而不是字母時,會計算出和值,最好使用 & 連字符
4、IsNumber(src) 判斷是否數(shù)字,VBA中有自己的函數(shù) IsNumeric(src)
- 2 回答
- 0 關(guān)注
- 133 瀏覽
添加回答
舉報