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
我正在尝试将当前列宽与自动调整列宽进行比较,如下所示:
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