對於一般的VBA函數和大多數編程我明白髮生這樣的事情一般程序執行中移動...被執行的代碼執行時不會一個excel VBA函數
子過程內,如果調用函數(它應該返回一個值),在這種情況下,它會返回一個值給變量num。
擴大,這意味着執行到哪裏調用該函數的行,然後應該跳過跌到哪裏函數編寫,並經過執行該函數中的每一行。
這是它以前的工作原理,我以前使用F8鍵突出顯示並按行逐行執行代碼。
問題 問題是,當執行到其中函數調用的函數只是跳過和執行不下去的函數內部並運行裏面的每一行的子過程中的線。
(我應該說這種情況發生時我有一個工作計劃的95%,我嘗試了重寫的功能,調用等功能)。
但每當一個函數被調用的代碼執行不進入函數本身它只是跳過它,並保存功能,因此保留爲空的結果的變量。
我試圖在函數的開始,當函數被調用的子過程中但是這沒有奏效創建斷點。
至少,執行應該得到的功能(功能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
對不起但你的問題是不可重複的。當我運行你的子程序時,我會在沒有問題的情況下進入函數。你能否添加一個可重複的測試用例? –
我試過在函數中只放一個字符串,所以有一個代替表名的值。兩者都不起作用。它只是跳過功能。我無法提供示例工作簿。 – yoshiserry
如果你不能提供一個可重複的例子,我認爲你不能在這裏得到很多幫助,因爲你的代碼應該按照你的預期工作,這就是它實際上在我的計算機上所做的。所以無論是你的機器的問題(嘗試另一個),或者你正在省略代碼的相關部分。 –