Board logo

標題: 請問 HLOOKUP 的 table_array 這部分使用名稱定義是否可行! [打印本頁]

作者: a8552065    時間: 2017-3-28 16:01     標題: 請問 HLOOKUP 的 table_array 這部分使用名稱定義是否可行!

想用 HLOOKUP 的 table_array 這部分使用名稱定義
並且用一個儲存格紀錄檔案的位置 = 'D:\[晴雨表.xlsx]天氣狀況統計'!$D$3:$AAR$6

Sheets("1.切換").Range("A16") = 'D:\[晴雨表.xlsx]天氣狀況統計'!$D$3:$AAR$6
但是在名稱管理器的部分確顯示 ="D:\[晴雨表.xlsx]天氣狀況統計'!$D$3:$AAR$6",導致HLOOKUP的 table_array 範圍錯誤。

相關VBA如下:

Sub test() '透過vba,讓hlookup可以用"名稱定義"的方式,快速參考晴雨表位置

Dim a As String

a = Sheets("1.切換").Range("A16") '.Value

ActiveWorkbook.Names.Add Name:="晴雨表", RefersTo:=a

End Sub

已經測試過字符串的方式也無法達成,有長輩處理過這樣的問題嗎!先感謝了
作者: stillfish00    時間: 2017-3-28 19:14

回復 1# a8552065
A16儲存格前面額外多加一個單引號看看。
作者: GBKEE    時間: 2017-3-29 08:59

回復 1# a8552065

試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Wb(1 To 2) As Variant, Rng(1 To 2) As Range, MyWb As Workbook
  4.     Set MyWb = ActiveWorkbook
  5.     Set Rng(1) = MyWb.Sheets("1.切換").Range("A16")     ''D:\[晴雨表.xlsx]天氣狀況統計'!$D$3:$AAR$6
  6.     Wb(1) = Split(Rng(1), "]")(0)                                       ''D:\[晴雨表.xlsx
  7.     Wb(1) = Replace(Wb(1), "[", "")                                   ''D:\晴雨表.xlsx
  8.     Wb(2) = Split(Split(Rng(1), "]")(1), "!")                        'Wb(2)(0)='天氣狀況統計' , Wb(2)(1)=$D$3:$AAR$6
  9.     With Workbooks.Open(Wb(1))
  10.         Set Rng(2) = .Sheets(Wb(2)(0)).Range(Wb(2)(1))     'D:\[晴雨表.xlsx]天氣狀況統計'!$D$3:$AAR$6
  11.         MyWb.Names.Add Name:=" 晴雨表", RefersTo:=Rng(2)
  12.         .Close
  13.    End With
  14. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)