【发布时间】:2021-07-05 21:42:35
【问题描述】:
我从其他地方找到了这段代码,并对其进行了一些修改以满足我的需要,但我并不完全确定它是如何工作的。我想知道它是如何工作的原因是因为我想进一步修改它,但我是 VBA 新手,不明白 Resize、Index 和 Evaluate 函数如何在这个宏中协同工作。
Sub RearrangeColumns()
Dim newColumnOrder As Variant
newColumnOrder = Array(1, 2, 3, 4, 41, 42, 43, 44, 5, 6, 49, _
7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, _
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, _
35, 36, 37, 38, 39, 40, 45, 46, 47, 48, 50, 51, 52)
Range("A1").Resize(Cells.Find("*", , xlFormulas, , xlRows, xlPrevious).Row, UBound(newColumnOrder) + 1) = _
Application.Index(Cells, Evaluate("ROW(1:" & Cells.Find("*", , xlFormulas, _
, xlRows, xlPrevious).Row & ")"), newColumnOrder)
End Sub
此外,是否可以修改此代码以使用已使用 VBA 创建的表?我一直在想办法重新排列 ListColumns,但似乎最好的选择是重新排列实际的字母/数字列。
谢谢!
【问题讨论】: