如何在Excel 2016中编写VBA代码删除工作簿所有工作表指定列?
解决Excel 2016中用VBA批量删除所有工作表指定列的问题
嘿,作为VBA新手,这个需求其实很好实现,我给你写好代码,再把关键细节讲清楚,你跟着做就行~
核心思路提醒
删除列的时候一定要从右往左删!如果先删左边的列(比如先删B列),后面的列号会自动左移,导致你原本要删的D列变成了C列,最后删错位置。所以我们把要删除的列按从右到左的顺序排列:AZ、AM、H、G、D、B。
完整VBA代码
Sub DeleteSpecifiedColumns() Dim ws As Worksheet Dim colsToDelete As Variant Dim i As Integer ' 定义要删除的列,严格按从右到左的顺序排列 colsToDelete = Array("AZ", "AM", "H", "G", "D", "B") ' 遍历当前工作簿中的每一个工作表 For Each ws In ThisWorkbook.Worksheets ' 依次删除数组里的每一列 For i = LBound(colsToDelete) To UBound(colsToDelete) ws.Columns(colsToDelete(i)).Delete Next i Next ws ' 删除完成后弹出提示 MsgBox "所有工作表的指定列已删除完毕!", vbInformation End Sub
代码关键部分解释
colsToDelete = Array("AZ", "AM", "H", "G", "D", "B"):这里把要删除的列存成数组,顺序是关键,一定要从右到左。你也可以用列的数字序号,比如AZ是52,AM是39,数组写成Array(52, 39, 8, 7, 4, 2)效果完全一样。For Each ws In ThisWorkbook.Worksheets:自动遍历当前打开的工作簿里的所有工作表,不用你手动选择每个表。ws.Columns(colsToDelete(i)).Delete:针对每个工作表,删除数组里指定的列。
新手操作步骤
- 先备份你的工作簿!万一操作错了还能恢复。
- 打开Excel,按
Alt + F11打开VBA编辑器。 - 在编辑器左侧的“工程资源管理器”里,右键点击你的工作簿名称→选择「插入」→「模块」。
- 把上面的代码粘贴到新建的模块里。
- 按
F5运行代码,或者点击编辑器上方的运行按钮(绿色小三角)。 - 运行完成后会弹出提示框,告诉你删除完成啦。
内容的提问来源于stack exchange,提问作者user3115933




