2017-04-20 60 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

相关问题