我一直在寻找一段时间,但找不到适合我的确切情况的解决方案。
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
询问答案 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
试一试。这不是最好的解决方案,但至少应该有效......