2017-03-02 33 views
2

我試圖做一個宏,其中包括更新幾個單元格中的外部文件鏈接,其中當前位於單元格中的文件位置以及我想要更改它的文件位置由用戶在另一個選項卡中指定。VBA Excel:如何使用用戶單元格輸入編輯鏈接?

我試圖通過查找/替換來做到這一點;如果我嘗試使用代碼中指定的文本執行此操作:

Range("b3").Formula = Replace(Range("B3").Formula, "\\folder\file", "\\folder\newfile") 

然後它會替換此文本並鏈接正確更新。如果我改變與輸入的位置,說oldlocationnewlocation

oldlocation= "\\folder\file" 
newlocation= "\\folder\newfile" 

Range("b3").Formula = Replace(Range("B3").Formula, oldlocation, newlocation) 

這也工作正常。但是,如果我改變位置的定義(如B3:「\文件夾\文件」):

oldlocation= Range("b3").text 
newlocation= Range("b4").text 

它不再起作用 - 經過與沒有變化或錯誤的代碼行。我已經做了一個快速檢查和範圍(「b3」)。文本 & 「\文件夾\文件」都似乎是文本字符串;之後,我很難過。我嘗試了一些我發現的不同的查找/替換格式,但所有結果都一樣。我錯過了什麼?

+0

嘗試在replace命令之前添加一個Debug.Print oldlocation,newlocation以查看您實際正在閱讀的內容。也許嘗試.value而不是.text?如果需要,可以使用str()函數將其轉換爲字符串。 – SgtStens

回答

0

問題是,當你定義的字符串來代替,

oldlocation= Range("b3").text 

oldlocation變量將具有小區(在單元格中看到的數據)不包含該小區的公式的值當前引用,所以替換函數找不到要替換的字符串。 您必須從Range("b3").formula字符串中提取您想要替換的位置並使用它。

+0

謝謝;修復它。 – Tanaerian

+0

很高興聽到它。請將答案標記爲其他人的解決方案! – ArchiCAT

相關問題