vba excel sheets.range.value错误

所以,有时当我尝试执行这个命令时,它给了我一个错误。 问题在于它非常不一致。 在某些情况下,它可以工作,而在其他情况下,则不会。

这是来自getCellVal函数的行。 cellName是一个string,s是一个整数。

getCellVal = Sheets(s).Range(cellName).Value 

这一次它给我:运行时错误“438”:对象不支持此属性或方法

这条线实际上在没有问题的情况下, 我添加了一些其他function,使用它,现在它不再工作。

任何想法为什么?

Sheets集合的非限定调用隐式引用任何工作簿当前处于活动状态,知道该集合包含Worksheet对象,还包括Chart对象,这一点很重要。

由于您的意思是使用Worksheet ,请使用Worksheets集合。

如果你没有得到“索引越界”的错误,那么你所要求的工作表确实存在。 但错误438指向该工作表不是一个Worksheet (因此没有一个Range成员)。

我敢打赌,活跃的工作簿在索引s有一个图表。

解决办法是简单明了的。

如果要使用包含正在运行的代码的工作簿,请使用ThisWorkbook限定Workbook成员调用:

 getCellVal = ThisWorkbook.Worksheets(s).Range(cellName).Value 

如果您的意思是使用工作簿,那么您需要在打开Workbook对象时注意:

 Dim wb As Workbook Set wb = Application.Workbooks.Open(path) '... getCellVal = wb.Worksheets(s).Range(cellName).Value