运行时错误'438'对象不支持此属性或方法 - 在rowcount 0处

时间:2015-06-18 10:47:28

标签: excel vba

我编写了一个VBA脚本,该脚本通过银行对帐单查找某个值的付款。这段代码在我编写时运行,但几个月后我得到运行时错误'438'Object不支持这个属性或方法;这是代码的摘录。

class Win32Interface(object):
    def __init__(self, win32_object):
        super(Win32Interface, self).__setattr__('win32_object', win32_object)

    def __setattr__(self, k, v):
        if k in self.properties:
            super(Win32Interface, self).__setattr__(k, v)
        else:
            setattr(self.win32_object, k, v)

    def __getattr__(self, v):
        return getattr(self.win32_object, v)

    @property
    def properties(self):
        class_items = self.__class__.__dict__.iteritems()
        return {k:v for k, v in class_items if isinstance(v, property) and k != 'properties'}

错误发生在'if'行。

我发现了各种以相同方式引用单元格值的示例,这在以前是有用的。如果你谷歌这个错误有很多结果,我发现使用'范围'比使用'单元'引用单个单元格更常见,但对我来说如何轻松翻译我的(x,y)单元格变量并不明显/循环到一个范围“A1”类型的值,所以我还没有尝试重写代码以使用范围。

我假设对象是bankWS.Cells,它是属性而不是问题的方法。我想知道对象的值是什么(= property),我不想对对象做任何事情(=方法)

我已经看到了许多不同的编写单元格对象的方法,并尝试了各种排列,但没有一种方法有所作为。例如

Set bankWB = ActiveWorkbook 
Set bankWS = ActiveSheet 

For rowcount = 0 To 250 
skipline = False
If bankWS.Cells(rowcount, paidcol) = 5 Then
    payee = Trim(bankWS.Cells(rowcount, payeecol))
    paid = "5"

我认为代码没问题,其他的东西也发生了变化。

解决

感谢@ 99moorem我的行计数循环应该从1开始,而不是0,没有单元格(0,1)。

0 个答案:

没有答案