EXCEL VBA用户定义函数-else不带if
所附的代码是在VBA上运行的,但我不明白为什么会出现错误,即“else with if”或“if with end if”。我很确定我已经把if语句的每一个端点都匹配好了 Sub teee()仅用于测试十进制函数。这将是极大的检查代码,并告诉我什么是错误的我的代码。。。我几乎接近完成一个项目,如果我可以解决这个功能EXCEL VBA用户定义函数-else不带if,vba,excel,if-statement,user-defined-functions,Vba,Excel,If Statement,User Defined Functions,所附的代码是在VBA上运行的,但我不明白为什么会出现错误,即“else with if”或“if with end if”。我很确定我已经把if语句的每一个端点都匹配好了 Sub teee()仅用于测试十进制函数。这将是极大的检查代码,并告诉我什么是错误的我的代码。。。我几乎接近完成一个项目,如果我可以解决这个功能 Sub teee() sss = "-1-21+" MsgBox (decimalize(sss)) End Sub 提前非常感谢这样更改它: If startp = 2
Sub teee()
sss = "-1-21+"
MsgBox (decimalize(sss))
End Sub
提前非常感谢这样更改它:
If startp = 2 Then
leftnum = Left(checkers, 1)
ElseIf startp = 3 Then leftnum = Left(checkers, 2)
ElseIf startp = 4 Then leftnum = Left(checkers, 3)
End If
信息:当您在同一行的“then”之后写入结果时,如果是,则不应写入end。因此,VBA不了解下一个ElseIf来自哪里
您几乎可以使用以下两个示例:
'Example 1 (no end if here)
if startp = 2 then leftnum = Left(checkers,1)
'Example 2 (you need end if here)
if startp = 2 then
leftnum = Left(checkers,1)
end if
更改如下:
If startp = 2 Then
leftnum = Left(checkers, 1)
ElseIf startp = 3 Then leftnum = Left(checkers, 2)
ElseIf startp = 4 Then leftnum = Left(checkers, 3)
End If
信息:当您在同一行的“then”之后写入结果时,如果是,则不应写入end。因此,VBA不了解下一个ElseIf来自哪里
您几乎可以使用以下两个示例:
'Example 1 (no end if here)
if startp = 2 then leftnum = Left(checkers,1)
'Example 2 (you need end if here)
if startp = 2 then
leftnum = Left(checkers,1)
end if
@Vityata展示了一种消除特定bug的方法。另一种方法是避免使用
If
,并使用Select Case
。生成的代码更具可读性:
Select Case startp
Case 2: leftnum = Left(checkers, 1)
Case 3: leftnum = Left(checkers, 2)
Case 4: leftnum = Left(checkers, 3)
End Select
另外,您有一个声明某些变量但不声明其他变量的任意模式,并且您至少有一个变量类型:
rigntnum=0
几乎肯定应该是rightnum=0
。您确实需要在所有模块的顶部使用Option Explicit
(另外,在VBA编辑器选项中启用Require Variable Declaration
)。这将帮助您编写不容易出现随机错误的代码。@vityta展示了一种消除特定错误的方法。另一种方法是避免使用If
,并使用Select Case
。生成的代码更具可读性:
Select Case startp
Case 2: leftnum = Left(checkers, 1)
Case 3: leftnum = Left(checkers, 2)
Case 4: leftnum = Left(checkers, 3)
End Select
另外,您有一个声明某些变量但不声明其他变量的任意模式,并且您至少有一个变量类型:
rigntnum=0
几乎肯定应该是rightnum=0
。您确实需要在所有模块的顶部使用Option Explicit
(另外,在VBA编辑器选项中启用Require Variable Declaration
)。这将帮助您编写不容易出现随机错误的代码。感谢您的宝贵建议,John将在下次编写。同时使用几个IF语句总是让我感到很复杂。谢谢你的建议,John,下次会这样做的。同时使用几个IF语句总是让我感到很复杂。非常感谢,Vityata,您的解决方案非常有效!很高兴知道,+1今天的业力:)如果你愿意,你可以点击左边的绿色复选框来选择答案,如下所示:非常感谢,Vityata,你的解决方案非常有效!很高兴知道,+1今天的业力:)如果你愿意,你可以点击左绿色复选框选择答案,如下所示: