Excel 按标题重新格式化表列列表

Excel 按标题重新格式化表列列表,excel,vba,Excel,Vba,我肯定有一些明显的东西我错过了,所以任何帮助都是感激的。我正在使用一个表格式的数据表。我有几个标题,我想用通用数字格式重新格式化。我不确定输入的数据是否会保持不变,因此我想我希望使用名称,而不是列号或字母。这是一个更大的项目的一部分,但这是第一步,所以其余的都与现在无关 当我运行这个时,我得到了错误 运行时错误438对象不支持此属性或方法 在.Union块上 Dim Table As Excel.ListObject Dim SortColIndex As Long Dim SortCol As

我肯定有一些明显的东西我错过了,所以任何帮助都是感激的。我正在使用一个表格式的数据表。我有几个标题,我想用通用数字格式重新格式化。我不确定输入的数据是否会保持不变,因此我想我希望使用名称,而不是列号或字母。这是一个更大的项目的一部分,但这是第一步,所以其余的都与现在无关

当我运行这个时,我得到了错误

运行时错误438对象不支持此属性或方法

.Union
块上

Dim Table As Excel.ListObject
Dim SortColIndex As Long
Dim SortCol As Range

Private Sub DefineVars()

Set Table = ActiveWorkbook.Worksheets("Data").ListObjects("_Data")
SortColIndex = Table.ListColumns("Bill to Account Number").Index
Set SortCol = Table.ListColumns(SortColIndex).Range

End Sub

Sub Fedex()

Call DefineVars

With Table
    .Union(.ListColumns("Bill to Account Number").DataBodyRange, _
    .ListColumns("Net Charge Amount").DataBodyRange, _
    .ListColumns("Tracking ID Charge Amount").DataBodyRange, _
    .ListColumns("Tracking ID Charge Amount9").DataBodyRange, _
    .ListColumns("Tracking ID Charge Amount11").DataBodyRange).Select
End With
With Selection
    .NumberFormat = "General"
End With

With Table
    .Sort.SortFields.Clear
    .Sort.SortFields.Add _
        Key:=SortCol, _
        SortOn:=xlSortOnValues, _
        Order:=xlDescending
    With .Sort
    .Header = xlYes
    .Apply
    End With
End With

End Sub

尝试下面的代码,我在代码注释中添加了解释:

Option Explicit

Sub Fedex()

Dim Tbl As ListObject
Dim TblRng As Range

'Call DefineVars

' set the ListObject (assuming you have 1 table in your worksheet)
Set Tbl = Worksheets("Sheet1").ListObjects(1) ' rename according to your sheet's name

With Tbl
    ' set the Range inside the ListObject (don't use Select)
    Set TblRng = Application.Union(.ListColumns("Bill to Account Number").DataBodyRange, _
                .ListColumns("Net Charge Amount").DataBodyRange, _
                .ListColumns("Tracking ID Charge Amount").DataBodyRange, _
                .ListColumns("Tracking ID Charge Amount9").DataBodyRange, _
                .ListColumns("Tracking ID Charge Amount11").DataBodyRange)
End With
With TblRng
    .NumberFormat = "General"
End With

' rest of your code ...

End Sub

您好@Shai Rado,我在我的原始代码中添加了一些东西,以显示我声明但忘记保留在问号中的变量。@MarkS。您只需将
Tbl
Table
进行交换,代码就可以正常工作了。不用担心,我已将所有代码整理好。我不太喜欢吃noobie。