【问题标题】:VBA saving tbl.ColumWidth as variable returns error 438? [closed]VBA 将 tbl.ColumWidth 保存为变量返回错误 438? [关闭]
【发布时间】:2020-06-22 05:06:12
【问题描述】:

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

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 行时,它都会给出错误:
对象不支持该属性或方法

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

【问题讨论】:

    标签: excel vba listobject


    【解决方案1】:

    你的问题在于你的语法

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

    您在ListColumns 的末尾缺少s

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

    【讨论】:

    • 谢谢,愚蠢的我没看到。另外,与 long 相比,Integer 占用的空间不是更少吗?我永远不会在工作表的单元格中超过 30 个字符,所以这就是为什么我将其设为整数以提高性能。
    • @Nemoko 看太久很容易错过最简单的东西
    • @Nemoko - 请参阅 this question 了解为什么 Long 优于 Integer。基本上没有性能优势,实际上可能有一点劣势。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    相关资源
    最近更新 更多