【发布时间】:2015-04-22 22:18:04
【问题描述】:
对于 VBA 函数和大多数编程,我理解一般程序执行会发生这样的事情......
如果在子过程中调用一个函数(它应该返回一个值),在这种情况下它会返回一个值给变量 num。
扩展这意味着执行到达我调用函数的行,然后应该跳到编写函数的位置,并执行该函数内的每一行。
这就是我之前使用 F8 键突出显示并逐行执行代码时的工作方式。
问题 问题是当执行到达调用函数的子过程中的行时,该函数只是被跳过并且执行不会进入函数内部并运行其中的每一行。
(我应该说,当这种情况发生时,我有 95% 的程序都在工作,我已经尝试重写函数,调用其他函数)。
但是每当调用一个函数时,代码的执行并不会进入函数本身,它只是跳过它,因此保存函数结果的变量是空的。
我尝试在函数开头以及在子过程中调用该函数时创建断点,但这没有奏效。
至少执行应该到达函数的定义(Function FirstRow() 等)并抛出和错误,但它没有这样做。
Sub Main
Dim num as double
Dim sheet_name as string
num = FirstRow(sheet_name)
End Sub
Function FirstRow(sheet as string) as double
select case sheet '<<----- execution never gets inside the function
case "sheet"
FirstRow = 8
case "sheet2"
FirstRow = 12
end select
End Function
【问题讨论】:
-
抱歉,您的问题无法重现。当我运行你的 sub 时,我可以毫无问题地进入函数。您能否添加一个可重现的测试用例?
-
我尝试在调用函数时只在函数中放入一个字符串,因此有一个值代替了工作表名称。两者都不起作用。它只是跳过该功能。我无法提供示例工作簿。
-
如果您不能提供可重现的示例,我认为您在这里无法获得太多帮助,因为您的代码应该按您的预期工作,这就是它在我的计算机上实际执行的操作。所以要么是你的机器的问题(尝试另一个),要么你省略了相关的代码部分。
标签: excel vba function execution skip