我在單元格A1,這是一個外部單元(即另一個工作簿)的小區地址的字符串,轉換外部單元地址到範圍在VBA
'[data transfer utility.xlsb]Sheet1'!$B$5
在VBA我想創建一系列對象,myRange
,這將對應於存儲在單元格A1中的地址。
我試過各種解決方案,但都沒有工作。
我在單元格A1,這是一個外部單元(即另一個工作簿)的小區地址的字符串,轉換外部單元地址到範圍在VBA
'[data transfer utility.xlsb]Sheet1'!$B$5
在VBA我想創建一系列對象,myRange
,這將對應於存儲在單元格A1中的地址。
我試過各種解決方案,但都沒有工作。
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
在VBA:
ExecuteExcel4Macro("'C:\[Book1.xlsx]Sheet1'!" & Range("A1").Address(, , xlR1C1))
在Excel:
='C:\[Book1.xlsx]Sheet1'!$A$1
感謝菲利普,起初不明白這一點,但剛纔研究它的一些更它似乎工作!使用ExecuteExcel4Macro的 – user1915541
可能有點令人生畏,但允許您在封閉的工作簿中引用數據,無需事先打開。 – InContext
這工作彼得,不得不修改略微的代碼: 函數參考(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
對不起,我不能讓代碼標籤工作,請有人可以編輯這個給我嗎?如果你可以發佈一些幫助(無用的)降價編輯幫助,那就太好了。 我做錯了什麼,我試過在代碼開始的那一行之前輸入4個空格?現在它甚至不會讓我編輯我自己的評論。 – user1915541
編輯上面的代碼,包括您的更正。如果你想在代碼中粘貼代碼,可以使用'\'嵌入代碼''或'
'。 –