我有一个工作簿(可以称之为工作簿):vba从封闭的工作簿中获得价值?
当C5单元格的变化我想寻找我关闭的工作簿(2017年计划)和看不起列K.如果K列值在规划师匹配在单元格C5我想要显示在消息中的值。
目前我得到一个0
请能有人告诉我在哪里,我错了?
代码(从拍摄):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wbPath As String, wbName As String
Dim wsName As String, cellRef As String
Dim Ret As String
If Not Intersect(Target, Target.Worksheet.Range("C5")) Is Nothing Then
'wbPath = "C:\Documents and Settings\Siddharth Rout\Desktop\"
wbPath = "G:\BUYING\Food Specials\2. Planning\1. Planning\1. Planner\8. 2017\"
wbName = "2017 Planner.xlsx"
wsName = "Planner"
cellRef = "K:K"
Ret = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, -4150)
MsgBox ExecuteExcel4Macro(Ret)
End If
End Sub
编辑:
感谢@MacroMarc他对目前的代码的帮助。 但是,我仍然有一些代码问题。
我在工作簿中单元格C5号在塔K存在在我的节目的工作簿4排113545.
这个数字。
我收到的消息框告诉我它的查找范围C11。但我不知道为什么?它应该在K栏中查看:K?不应该吗?
它也会产生未找到的值。
我需要消息框来显示K4中匹配值的单元格地址。
没有直接关系,但你可以通过反转的条件,做'退出Sub'删除嵌套级别保释出来,而不是将整个身体包裹在“If ... End If”块中。 –
'MsgBox Dir(wbPath&wbName)'显示什么? –
您正在尝试获取整列的值。假设文件存在,那可能不会让你得到你所期望的。 'Ret'将包含该范围内的一个单元格的一个值。如果你正在寻找**查找**值,那么你需要使用* lookup *函数。 –