变量vlookup VBA在服务器上的封闭文件中

时间:2013-12-30 17:17:56

标签: file vba variables vlookup

我一直在寻找一段时间,但找不到适合我的确切情况的解决方案。

    VLOOKUP(Data!B4,'\\server\Log\[file - 2013.xls]1206'!$B:$F,3,FALSE)

此功能用于在单元格中的已关闭文件中查找信息,但希望使工作表“1206”可变为日期代码MMDD。也许使文件也变量,还不确定。

我的目标:是制作一个查找功能,它将从服务器上搜索CLOSED文件中的多个文件,并告诉我它找到了哪个表单。

    datecode = "1206"
    :find
    If "VLOOKUP(Data!B4,'\\server\Log\[file - 2013.xls]" & datecode & "'!$B:$F,3,FALSE)" > 0
    'Is NOT an ERROR
    MsgBox datecode
    else
    datecode = (datecode + 1)
    Goto find 
    End if

我遇到的一些问题: “”错误输出或显示/未在正确的时间出现 '在文件名错误出现时

我是VBA的新手,并没有完全理解弦乐,Dim,FormulaR1C1和my.formula的内容和方式 想要学习需要我可以使用和编辑/理解的代码。 感谢您的时间。 问题也在http://www.vbaexpress.com/forum/showthread.php?48547-Variable-vlookup-in-VBA-in-closed-file&p=302425#post302425

询问

1 个答案:

答案 0 :(得分:0)

我不是100%肯定你想要实现的目标......

如果您是VBA的新手,我假设您想模仿一些excel行为并使用公式来确定是否存在某些东西。如果是这种情况,我建议你在单元格中生成公式,因为VBA本身并不是为了评估公式而设计的(即使你有像Evaluate或Module WorksheetFunctions这样的方法)。这将是:

datecode = "1206"
find:
with Thisworkbook.Sheets("TestSheet").Cells(1,1)
    .Formula = "=VLOOKUP(Data!B4,'\\server\Log\[file - 2013.xls]" & datecode & "'!$B:$F,3,FALSE)" > 0
    If Vba.IsError(.Value) then
        datecode = (datecode + 1)
        Goto find 
    End If
end with

试一试。这不是最好的解决方案,但至少应该有效......