2014-10-09 63 views
0

美好的一天 我正在嘗試使用strLookup從其他工作簿運行vlookup。 如果工作簿和工作表名稱是靜態的,它會很好用;不過,我需要從我剛纔在宏定義的字符串插入動態表名稱,它不工作Excel strLookup幫助(Dynamnic工作表值)

我試過下面

這個工程:

strLookup = "'C:\Users\hayekn\Desktop\AR Reports\0MENACA Working File\AR Working File\1- Macro AR reporting\Delta\[test.xlsx]40'!A:B" 


這些不工作(試圖將工作表名稱「40」更改爲之前定義的動態值(DailyWeek -1)

strLookup = "'C:\Users\hayekn\Desktop\AR Reports\0MENACA Working File\AR Working File\1- Macro AR reporting\Delta\[test.xlsx](Dailyweek -1)'!A:B" 

strLookup = "'C:\Users\hayekn\Desktop\AR Reports\0MENACA Working File\AR Working File\1- Macro AR reporting\Delta\[test.xlsx]Dailyweek -1'!A:B" 

任何想法? 感謝

我的整個下面的代碼:

Dailyweek = Workbooks("AR Reporting Tool.xlsm").Worksheets("Reports").Range("G30") 

Dim sh As Worksheet, flg As Boolean 
For Each sh In Worksheets 

If sh.Name Like (Dailyweek - 1) Then flg = True: Exit For 
Next 

If flg = True Then 
    'MsgBox "Found!" 
    wbk4.Sheets("UAE").Activate 
    With wbk4.Sheets("UAE") 
    Set clDest = .Range("N2") 
    Set clLookup = .Range("A2") 
    strLookup = "'C:\Users\hayekn\Desktop\AR Reports\0MENACA Working File\AR Working File\1- Macro AR reporting\Delta\[UAE FM.xlsx](Dailyweek -1)'!A:B" 
    End With 

    If clLookup.Offset(1, 0) <> vbNullString Then 
    rws = Range(clLookup, clLookup.End(xlDown)).Rows.Count 
    Set clDest = clDest.Resize(rws, 1) 
    End If 
    clDest.Formula = "=IFERROR(VLOOKUP(" & clLookup.Address(False, False) & "," & strLookup & ",2,0),0)" 
    clDest.Value = clDest.Value ' Convert to value 

else 
    msgbox "Doesnt exist" 
end if 
+0

需要更多的代碼。很難說出你在這裏的實際情況。 – 2014-10-09 05:18:39

回答

1

你只需要正確地構建您的字符串。
也許這樣的事情?

strLookup = "'C:\Users\hayekn\Desktop\AR Reports\0MENACA Working File" _ 
    & "\AR Working File\1- Macro AR reporting\Delta\[test.xlsx]" _ 
    & (Dailyweek -1) & "'!A:B" 
+0

有時候最小的東西可以讓你看起來很愚蠢:)非常感謝你,完美的工作 – Nadz 2014-10-09 05:24:35

+0

@ user3800275這可以通過實踐和經驗得到改善。順便說一句,大的事情是從小事情和大部分時間,小事情是重要的。 – L42 2014-10-09 05:31:17

+0

感謝像你這樣的人來幫助別人,感激! – Nadz 2014-10-09 05:37:29