2016-02-05 60 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)