2012-08-28 564 views
0

我試圖追查和解決這個錯誤現在幾個小時,我只是無法弄清楚。這是設置。Excel VBA自定義函數給出「引用無效」錯誤

我有一個excel工作簿,裏面有兩個工作表:「輸入」和「計算」。我寫了幾個自定義函數來計算某些事情。這些函數在「計算」表中使用,但在「輸入」表中引用單元格。現在,如果我只是使用工作表本身,那麼所有的工作都很好,而且這些功能都能正常工作

不過,我有第二個與第一個交互的excel工作簿。我在第二個工作簿中有一個宏,它試圖在第一個工作簿的「輸入」表中定義值。但是,如果這樣做,突然間功能不起作用。當我試圖在「計算」表單中跟蹤單元格的錯誤並嘗試轉到「輸入」表單元中的單元格時,它聲稱該引用無效。

我不知道是什麼問題。起初我以爲它可能與第一個工作簿的名稱有關(這是「Log K Calculator 7.0.0.xlsm」),但我試過改變它,並得到同樣的問題。這是第二片,其試圖改變在第一個值的宏:

Sub macro() 

Dim logK As String 
Dim this As String 
logK = "Log K Calculator 7.0.0.xlsm" 
this = ThisWorkbook.Name 

Workbooks(logK).Activate 

Workbooks(logK).Sheets("Input").Cells(11, 4).Value = Workbooks(this).Sheets(1).Cells(1, "B").Value 
Workbooks(logK).Sheets("Input").Cells(12, 4).Value = Workbooks(this).Sheets(1).Cells(2, "B").Value 
Workbooks(logK).Sheets("Input").Cells(14, 4).Value = Workbooks(this).Sheets(1).Cells(3, "B").Value 

End Sub 
+1

這對我而言完全適用於將名稱更改爲Book1和Book2的WB ...通過錯誤消息來判斷「參考」,我猜在單元格中有公式。所以你正在修改一個公式引用其他地方的單元格。 –

+0

這個問題令人沮喪的是它不一致。有時會發生,有時不會發生,而且我正在制定一個真正的麻煩來確定原因。 – user1630640

+0

您能否提供Workbooks(this).Sheets(1).Cells(...)源單元格中的內容? –

回答

0

你可能要檢查的Excel是如何處理的任何值是坐在你的外部工作簿。例如。它是否將文字視爲文字?你可以在輸入表中輸入'10000','300'和'600'(強制它把它們當作文本,但是顯示數字)來查看,看看你是否得到相同的參考錯誤。

如果這樣做,那麼將該值轉換爲類型化變量(Long,Decimal,您的名字)可能會解決該問題。或者至少讓錯誤格式化的VBA嗆(例如,有些空間在裏面,這可能會解釋明顯的不一致)

0

我知道這個線程是4歲但是,以防萬一任何人仍然在尋找答案像我一樣,對我來說,這個錯誤不是由我的代碼引起的,而是由於我通過單擊從其他工作簿複製的文本框來運行該過程。我將程序/宏附加到了文本框中,但忘記了已經有超鏈接分配給同一個文本框。刪除超鏈接解決了問題。