excel - 添加新列时,VBA-Excel 按字母顺序重新排列列
问题描述
通过 VBA 添加新列时,我的文件出现问题。单击按钮时,它会获取一个进程 ID 号并从不同的工作表在表上创建一个列。
每次添加新列时,如何按字母顺序(按标题值)重新排列列。
列数是动态的,在用户创建进程之前我无法知道标题名称。
这是我当前的代码:
'Create a new column on the process assignment table
Sheets("T_PRAS").ListObjects("T_PRAS").ListColumns.Add.Name = "PR_" & Sheets("Administrador").Range("B53").Value
解决方案
这是经过轻度测试的,但我在对工作表进行排序时做了类似的事情,这似乎也适用于您的表格。
Dim x As Long, y As Long, tbl As ListObject
Set tbl = ActiveSheet.ListObjects("T_PRAS")
' Loop through each column
With tbl.ListColumns
For x = 1 To tbl.ListColumns.Count
For y = x + 1 To tbl.ListColumns.Count
If .Item(y).Name < .Item(x).Name Then
.Item(y).Range.Cut
.Item(x).Range.Insert xlRight
End If
Next y
Next x
End With
本质上,您有两个循环。第一个循环将列名与第二个进行比较,如果第二个循环的名称在第一个之前,那么它将移动该列。
推荐阅读
- android - 使用改造 android 成功获取 GET 请求需要什么?
- c - C中按值或指向结构的指针的多个参数
- css - mvc5 创建新的 CSS 不起作用
- php - yii2无法上传视频文件
- delphi - Delphi:如何在后代中重载父构造函数但将其隐藏在其他不同的后代中
- cuda - 为什么 CUDA 索引是二维的?
- sql - 在 SQL 中将数字转换为日期 (DD-MON-YY)
- sed - 在 Makefile 中使用 SED 将 yarn 生成的文件名替换为哈希
- octave - 如何在 ubuntu 的 Octave 中安装符号包?
- java - Destinationsource.getQueues 未使用 SSL-Connection 返回正确数量的队列