2017-04-20 42 views
0

我有一個工作簿(可以稱之爲工作簿):vba從封閉的工作簿中獲得價值?

enter image description here

當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中匹配值的單元格地址。

enter image description here

+0

沒有直接關係,但你可以通過反轉的條件,做'退出Sub'刪除嵌套級別保釋出來,而不是將整個身體包裹在「If ... End If」塊中。 –

+0

'MsgBox Dir(wbPath&wbName)'顯示什麼? –

+0

您正在嘗試獲取整列的值。假設文件存在,那可能不會讓你得到你所期望的。 'Ret'將包含該範圍內的一個單元格的一個值。如果你正在尋找**查找**值,那麼你需要使用* lookup *函數。 –

回答

0

- 你可以寫出來的函數的字符串懲戒像:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, Me.Range("C5")) Is Nothing Then Exit Sub 

    Dim wbPath As String, wbName As String, wsName As String 
    Dim Ret As String, cellRef As String, externalRange As String 
    wbPath = "G:\BUYING\Food Specials\2. Planning\1. Planning\1. Planner\8. 2017" 
    wbName = "2017 Planner.xlsx" 
    wsName = "Planner" 
    cellRef = "K:K" 

    externalRange = "'" & wbPath & "\[" & wbName & "]" & _ 
      wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1) 

    Ret = "VLOOKUP(""" & Target.Value & """," & _ 
      externalRange & ",1,FALSE)" 

    Msgbox Ret 
    On Error GoTo errHandler 'Should handle any error from External Macro... 
    MsgBox ExecuteExcel4Macro(Ret) 

    Exit Sub 
errHandler: 
    MsgBox "Value not found!!" 

End Sub 
+0

@MarcroMarc感謝您的建議,在我的情況下,我只需要使用列K:K。所以我改變了A:B到K:K。這告訴我,儘管價值在我的計劃員工作簿中,但沒有發現任何結果。 – user7415328

+0

我稍微編輯了一下。如果你現在運行我的函數,你會得到什麼?檢查反斜槓等......我認爲這將是一個簡單的調試... – MacroMarc

+0

@MarcroMarc請參閱編輯。它仍然不能正常工作 – user7415328

相關問題