我有一個工作簿(可以稱之爲工作簿):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 *函數。 –