2012-12-19 23 views
1

我在單元格A1,這是一個外部單元(即另一個工作簿)的小區地址的字符串,轉換外部單元地址到範圍在VBA

'[data transfer utility.xlsb]Sheet1'!$B$5 

在VBA我想創建一系列對象,myRange,這將對應於存儲在單元格A1中的地址。

我試過各種解決方案,但都沒有工作。

回答

0

VBA:

 
Function Reference(strAddress As String) As Range 

    Dim intPos As Integer, intPos2 As Integer 
    Dim strWB As String, strWS As String, strCell As String 

    intPos = InStr(strAddress, "]") 
    strWB = Mid(strAddress, 2, intPos - 2) 

    intPos2 = InStr(strAddress, "!") 
    strWS = Mid(strAddress, intPos + 1, intPos2 - intPos - 2) 

    strCell = Mid(strAddress, intPos2 + 1) 

    Reference = Workbooks(strWB).Worksheets(strWS).Range(strCell) 

End Function 
+0

這工作彼得,不得不修改略微的代碼: 函數參考(strAddress作爲字符串)作爲範圍 昏暗intPos作爲整數,intPos2作爲整數 昏暗strWB作爲字符串,strWS作爲字符串,strCell作爲字符串 intPos = InStr(strAddress,「]」) strWB = Mid(strAddress,2,intPos-2) intPos2 = InStr(strAddress,「!」) strWS = Mid(strAddress,intPos + 1,intPos2 - intPos - 1) strCell = Mid(strAddress,intPos2 + 1) 設置參考=工作簿(strWB).Worksheets(strWS).Range(strCell) End Function – user1915541

+0

對不起,我不能讓代碼標籤工作,請有人可以編輯這個給我嗎?如果你可以發佈一些幫助(無用的)降價編輯幫助,那就太好了。 我做錯了什麼,我試過在代碼開始的那一行之前輸入4個空格?現在它甚至不會讓我編輯我自己的評論。 – user1915541

+0

編輯上面的代碼,包括您的更正。如果你想在代碼中粘貼代碼,可以使用'\'嵌入代碼''或'

Code
'。 –

0

在VBA:

ExecuteExcel4Macro("'C:\[Book1.xlsx]Sheet1'!" & Range("A1").Address(, , xlR1C1)) 

在Excel:

='C:\[Book1.xlsx]Sheet1'!$A$1 
+0

感謝菲利普,起初不明白這一點,但剛纔研究它的一些更它似乎工作!使用ExecuteExcel4Macro的 – user1915541

+0

可能有點令人生畏,但允許您在封閉的工作簿中引用數據,無需事先打開。 – InContext