VBA 将 tbl.ColumWidth 保存为变量 returns 错误 438?

VBA saving tbl.ColumWidth as variable returns error 438?

我正在尝试将当前列宽与自动调整列宽进行比较,如下所示:

Option Explicit
    Dim Tbl As Object
    Dim Col As Integer
    Dim I As Integer
    Dim OldColumnWidth As Integer
    Dim NewColumnWidth As Integer
Private Sub WorkSheet_Change(ByVal Target As Range)
    'On Error GoTo ErrHandler

    Set Tbl = ListObjects("RuimteTabel")
    Col = Tbl.DataBodyRange.Columns.Count
    For I = 1 To Col
        OldColumnWidth = Tbl.ListColumn(I).Range.ColumnWidth
        NewColumnWidth = Tbl.DataBodyRange.Column.AutoFit

        If NewColumnWidth < OldColumnWidth Then
            'Tbl.DataBodyRange = OldColumnWidth
        Else
            'Tbl.DataBodyRange = NewColumnWidth
        End If
    Next I

但是每当它在 OldColumnWidth = Tbl.ListColumn(I).Range.ColumnWidth 行时它给出错误:
对象不支持此 属性 或方法

我明白错误发生的原因,但我没有发现我的代码有任何问题/如何修复错误

你的问题出在语法上

OldColumnWidth = Tbl.ListColumns(I).Range.ColumnWidth

您在 ListColumns 的末尾缺少一个 s

我还建议将变量调暗为 Long 而不是 Integer