Excel VBA - 可移植的表格排序



这是我之前提出的一个问题的后续,该问题涉及一个旨在可移植的多进程宏。我选择只删除由于工作表或工作簿之间没有可移植性而给我适合的部分。

我开始构建排序例程,最终通过录制宏来执行排序来删除。然后编写例程来标识当前工作表,以及我关注的当前表。(这是为了在工作表之间提供可移植性。当我为工作表和表名称插入变量时,整个事情就横盘整理了。

我最终从工作表中删除了它,并将让用户自己进行排序,但我想弄清楚并认为也许有人已经完成了它并且有一个代码片段可以启发我。


我现在有两段代码,它们只针对一个问题执行此操作。

我的代码的前半部分将焦点表名捕获到变量中。

我还有一段代码,可以可靠地按照我想要的方式进行排序。 剩下的唯一问题是第二部分强制我输入文本值而不是使用变量。这意味着标识焦点表名称的上半部分是无用的,我必须创建 15 个单独的子,每个工作表/表组合一个。

下面是最后一个代码。对"Table126"的每个引用都需要替换为我的TableName变量。

我不知道如何让它工作!

Dim ws As Worksheet
Set ws = ActiveSheet
Dim tbl As ListObject
Set tbl = ws.ListObjects("Table126")
Dim sortcolumn As Range
Set sortcolumn = Range("Table126[LOC]")
With tbl.Sort
.SortFields.Clear
.SortFields.Add(Key:=sortcolumn, Order:=xlDescending, _
SortOn:=xlSortOnCellColor).SortOnValue.Color = RGB(255, 255, 0)
.Header = xlYes
.Apply
End With

@DocBrown 在你提示 ws 下面,前置成功了!谢谢!

尝试类似

Set sortcolumn = ws.Range(TableName & "[LOC]")

其中TableName是一个字符串变量。

如果它仍然不起作用,您需要发布一个最小的、可重现的示例,以便我们可以实际运行这个东西并看到您收到的相同错误消息。

最新更新