【问题标题】:Sort a column in an excel table using table index vba使用表索引vba对excel表中的列进行排序
【发布时间】:2016-01-15 02:31:25
【问题描述】:

如何在不按名称调用表的情况下引用表中的特定列?我想将 ===> Range("Table1[CODER]")

Public Sub CreateTableAndSortYNG()
Dim tableName As String

  With ActiveWorkbook.ActiveSheet
    .ListObjects.Add(xlSrcRange, .UsedRange, , xlYes).Name = .Name & "_Table"

tableName = ActiveWorkbook.ActiveSheet.ListObjects(1).DisplayName

MsgBox tableName

    .ListObjects(1).Sort.SortFields.Clear

    .ListObjects(1).Sort.SortFields.Add Key:=Range("Table1[CODER]"), _
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    .ListObjects(1).Sort.SortFields.Add Key:=Range("Table1[TYPE]"), _
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    .ListObjects(1).Sort.SortFields.Add Key:=Range("Table1[DSCHG_DT]"), _
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
  End With
End Sub

【问题讨论】:

  • CODER 会变成 TableName 吗?你可以做.ListObjects(1).Sort.SortFields.Add Key:=Range("Table1[" & tableName & "]"), ...
  • CODER 是表中列的名称。我试图用索引号或变量“tableName”替换代码的“Table1”部分,因为该表实际上永远不会被称为“Table1”
  • 啊,那我相信你可以做到.ListObjects(1).Sort.SortFields.Add Key:=Range(tableName & "[CODER]"), _ ...

标签: vba excel


【解决方案1】:

几个笔记。您正在使用With,但没有充分利用它。此外,您已经有了在这种情况下如何使用变量的理论(请参阅With ActiveWorkbook.ActiveSheet.ListObjects.Add(xlSrcRange, .UsedRange, , xlYes).Name = .Name & "_Table")。

这是你的代码,收紧:

Public Sub CreateTableAndSortYNG()
Dim tableName As String

With ActiveWorkbook.ActiveSheet
    .ListObjects.Add(xlSrcRange, .UsedRange, , xlYes).Name = .Name & "_Table"

    tableName = .ListObjects(1).DisplayName
    'MsgBox tableName ' I removed this because I think you're using this to check the name. I like using the next line instead
    Debug.Print tableName ' This will show in the "Immediate Window" in the VB Editor (press CTRL+G) to see the immediate window
    With .ListObjects(1).Sort.SortFields
        .Clear
        .Add Key:=Range(tableName & "[CODER]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range(tableName & "[TYPE]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Add Key:=Range(tableName & "[DSCHG_DT]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    End With
End With
End Sub

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多