2017-06-22 130 views
0

我有一個Excel中的VBA宏,過去幾天工作正常,但今天,當我啓動它不工作了。有趣的是,沒有對Excel文件和宏進行更改。VBA Excel宏停止看到文本框

該宏附加到按鈕並從名爲CSVExportRange的文本框中獲取數據。當我嘗試啓動它,我得到一個

「對象不支持此屬性或方法」

錯誤行,我設定的範圍基於文本字段的值:

Dim r As Range 
Set r = Range(Application.ActiveSheet.CSVExportRange.Value) 

我試圖用它進行試驗和原來不看文本框在所有現在:

Dim a As Worksheet 
Dim k As TextBox 

Set a = Application.ActiveSheet 
Set k = Application.ActiveSheet.CSVExportRange 

在上面的例子中,最後一行的調試中斷「Object不支持該屬性或方法」錯誤。

我的文本框安裝正確,並沒有改變它自從上次一切正常。

screen

怎麼了?

+1

的屏幕截圖顯示'CSVExportPath',不'CSVExportRange'。 – GSerg

+0

你說得對,當屏幕顯示和選擇改變時,我必須移動鼠標。 CSVExportRange的設置方式相同(我將添加新的屏幕截圖,但我無法編輯我的帖子,也沒有將它添加到評論中)。 – ilozen

+0

csvexportrange的值是否以字符串範圍存在(例如:「$ a $ 1」)?而不是空的?你如何填充csvexportrange? –

回答

0

不知道爲什麼會發生,但重新啓動Excel兩次幫助... 就像,當我關閉所有Excel文件並重新啓動它時,它仍然無法正常工作。這樣做之後再次開始工作。

注意,無論是遠程/網絡/共享文件,所以它不是某人/別的鎖定某些文件的情況下...

+0

然後可能在重新啓動之前,錯誤的表單是'ActiveSheet'。在大多數情況下使用'ActiveSheet'會產生奇怪的問題,因爲人們使用它是錯誤的。我幾乎不推薦避免使用'ActiveSheet',而是始終使用名稱'Worksheets(「MySheetName」)來指定表格,以便宏指定正確的表單,與此時哪個表單獨處於活動狀態無關。另請參見[VBA最佳實踐:避免在Excel中使用ActiveCell或ActiveSheet](https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/7264/avoid-using-activecell-or-activesheet-在-Excel文件)。 –