为什么函数不能正常运行 总是出现值错误?

Function TentoFifteen(src As Long)
If WorksheetFunction.IsNumber(src) Then
Dim dest As String
Dim result As Long
While True
result = src Mod 15
dest = WorksheetFunction.Dec2Hex(result) + dest
src = src - result
src = src / 15
If src = 0 Then
TentoFifteen = dest
Return
End If
Wend
Else
TentoFifteen = ""
End If
End Function

狐的传说
浏览 136回答 2
2回答

慕的地8271018

晕,这是你自己写的吗?怎么用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 NumExit Sub ' 使用 Exit 命令来避免错误发生。MyRoutine:Num = Num/2 ' 将数除以 2。Return ' 将控制返回 GoSub 之后的语句。End Sub

素胚勾勒不出你

Public Function TentoFifteen(src As Long) As StringApplication.VolatileIf Not (IsNumeric(src)) Then TentoFifteen = "#src": Exit FunctionDim dest As String, result As LongDo While Trueresult = src Mod 15src = (src - result) / 15dest = IIf(result < 10, result, Chr(64 + result)) & destIf src = 0 Then TentoFifteen = dest: Exit DoLoopEnd Function------------你的程序中,可能的错误:1、Return 是C语言里面的吧?VB里面有 GoSub...Return 语句 ,不是你的用法2、Dec2Hex()函数是工程函数,需要加载 分析工具库 ,也就是说,是别人做的工程函数,尽量不要使用3、dest = WorksheetFunction.Dec2Hex(result) + dest当前面的数值计算出来是 数字,而不是字母时,会计算出和值,最好使用 & 连字符4、IsNumber(src) 判断是否数字,VBA中有自己的函数 IsNumeric(src)
打开App,查看更多内容
随时随地看视频慕课网APP