2016-02-05 59 views
0

我正在寫一個宏,在vba中查找一個工作表中的值並返回數據並將其保存在另一個工作表中。但我得到一個編譯錯誤「編譯錯誤:子或功能未定義」。子或函數沒有定義:求解沒有幫助

我試圖通過選擇「解決方案」下的引用,但我仍然得到這個錯誤。

這裏是我的代碼::

For i = 1 To j 
    temp_var = config_sht_name(i) 
    MsgBox temp_var 

    For Each cell In Worksheets(Sheet_Name).Range("A9:A37") 
     On Error Resume Next 
     'Ret = Application.WorksheetFunction.VLookup(cell, Worksheets("config_sht_name[i]").Range("A9:E37"), 5, 0) 
     Ret = VLookup(cell, Indirect(Concatenate("'", temp_var, "'!")), 5, 0) 
     On Error GoTo 0 

     If Ret <> "" Then 
      Application.ActiveCell.Offset(0, i) = Ret 
     End If 
     MsgBox Ret 

    Next 
Next i 

我收到錯誤「拼接」和「間接」的功能。 請建議我錯過了什麼。

--Sanjeev

+0

按照錯誤信息串聯和間接的邏輯沒有內置VBA功能。 – Jules

+0

'temp_var'持有什麼值?你期望'Concatenate(「'」,temp_var,「'!」)函數返回什麼? 「工作表Sheet1!」? – shahkalpesh

+0

在代碼編輯器的最頂端添加「OPTION EXPLICIT」(是的,在函數之外,再次,整個代碼編輯器窗口的第一行應該是這個)。經常解決這類問題(該指令意味着沒有變量可以在沒有被首先聲明的情況下使用)。唯一的「不適」是在第一次使用之前你必須「變暗」變量 – 2016-02-05 07:24:46

回答

0

如果確定與以下線的

Ret = VLookup(cell, Indirect(Concatenate("'", temp_var, "'!")), 5, 0) 

我建議,而不是Conconate功能使用

str1 = "'" & temp_var & "'!" 
Ret = VLookup(cell, Range([Indirect(str1)]), 5, 0)