细节,细节
我在VBA中有以下各种功能和子类。
IsBlank
我的第一个函数IsBlank
检查一个值:它执行一个MsgBox
,如果该值为空,则返回True
。如果不是空白,IsBlank
将返回False
。这个函数给出了预期的结果。
DoStuff1
我的下一个函数--让我们称之为DoStuff1
--应该会自动返回False
,如果IsBlank
是True
的话。所以一开始我有:
If (IsBlank = True) Then
MsgBox "Yes, it does recognize there's a blank..." '<--It gets here...
DoStuff1 = False '<-- But this doesn't end the function.
'Exit Function <-- If I uncomment this, it works. But I shouldn't need it.
End If
这个If
语句后面的代码仍然在运行。
Dependent Procedures
我有许多使用DoStuff1
的子过程。在开始时,我包括:
If (DoStuff1 = False) Then
MsgBox "No, it doesn't get here..."
Exit Sub '<--It doesn't exit
End If
然而,这些潜艇跳过了这一步,没有将DoStuff1
视为False
。
总结一下
因此,无疑有两个相互关联的问题:
DoStuff1
不会在赋值时结束。DoStuff1
的子引用不承认DoStuff1
返回指定的值。对于我做错了什么有什么想法.?不应该给一个VBA函数赋值总是结束这个函数?
注意:是的,我意识到我可以组合这些函数,但是如果我想的话,应该允许我编写漂亮的代码,对吗?
发布于 2015-07-27 11:59:33
您会问:“不应该给VBA函数赋值,总是结束函数?”
No,分配函数返回值从不结束该函数。只有Exit Function
或End Function
才能做到这一点(或错误)。
这就是你做错的事。分配函数和返回是完全不同的操作。
https://stackoverflow.com/questions/31662101
复制