2 回答

TA贡献1796条经验 获得超4个赞
晕,这是你自己写的吗?怎么用While、Return、Wend这些偏冷门的东东啊,最让人不可理解的是,While True,这不是死循环了吗,While后面跟着的应该是个判断语句,True时循环,False时退出循环。
GoSub...Return 语句
在一个过程中跳到另一个子程序中执行,执行后再返回。
语法
GoSub line
...
line
...
Return
必要的 line 参数可以是任何行标签或行号。
说明
可以在过程中的任何地方使用 GoSub 和 Return,但是 GoSub 和与之相应的 Return 语句必须放在同一个过程中。一个子程序中可以包含一个以上的 Return 语句,但是当碰到第一个 Return 语句时,程序就会返回到紧接在刚刚执行的 GoSub 语句之后的语句继续执行。
注意 不能使用 GoSub...Return 来进入或退出 Sub 过程。
提示 创建分开的过程,并使用 GoSub...Return 来调用,可以使程序更具结构化。
GoSub...Return 语句示例
本示例使用 GoSub 来调用子过程里的一段子程序。Return 语句则将执行返回到 GoSub 的下一个语句。Exit Sub 语句则是用来避免控制意外进入该子程序的情形发生。
Sub GosubDemo()
Dim Num
' 请求用户输入一个数字。
Num = InputBox("Enter a positive number to be divided by 2.")
' 如果用户输入一个正整型,则使用子程序。
If Num > 0 Then GoSub MyRoutine
Debug.Print Num
Exit Sub ' 使用 Exit 命令来避免错误发生。
MyRoutine:
Num = Num/2 ' 将数除以 2。
Return ' 将控制返回 GoSub 之后的语句。
End Sub

TA贡献1827条经验 获得超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()函数是工程函数,需要加载 分析工具库 ,也就是说,是别人做的工程函数,尽量不要使用
3、dest = WorksheetFunction.Dec2Hex(result) + dest
当前面的数值计算出来是 数字,而不是字母时,会计算出和值,最好使用 & 连字符
4、IsNumber(src) 判断是否数字,VBA中有自己的函数 IsNumeric(src)
- 2 回答
- 0 关注
- 135 浏览
添加回答
举报