2017-06-22 99 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文件)。 –