回去的路有些黑暗,担心让你一个人走…… 前几期我们分享了VBA常用小代码系列的第003篇,内容是快速批量更改工作表名称,之后有朋友问,能不能快速对工作表按名称进行排序? 比如说,有一个工作薄,有十几张工作表,现在要重新设置工作表排放顺序,能不能快速处理哩? 当然是可以的。 为了方便大家理解和灵活使用VBA小代码,我们同03期一样,依然采用多步走的方式。 第1步,将工作簿现有的工作表名称提取到表格的A列。 代码如下: Sub ml() 'EH VBA公众号VBA编程学习与实践 Dim sht As Worksheet, k& [a:a].ClearContents '清空A列内容 [a:a].NumberFormat = '@' '设置文本格式,防止文本数值数据变形 [a1] = '目录' k = 1 For Each sht In Worksheets '遍历工作簿中每个工作表 k = k + 1 '累加K值 Cells(k, 1) = sht.Name '将工作表名称依次放入表格A列 Next End Sub 第2步,对A列的工作表名称排序。 利用EXCEL自带的排序功能,升序也好,降序也罢,甚至自定义排序,都可以很快捷的完成对A列工作表名称排序的操作。 第3步,此时,我们只需要让工作表按我们A列排列好的顺序重新排排坐就好了。 代码如下: Sub Sortsheet() Dim Sht As Worksheet, Shtname$, i& Set Sht = ActiveSheet '设置变量sht为当前激活的工作表,即目录表。 For i = 2 To Sht.Cells(Rows.Count, 1).End(xlUp).Row '遍历工作表A列的数据,A1以外。 Shtname = Sht.Cells(i, 1).Value '将A列值赋值为字符串变量shtname Worksheets(Shtname).Move after:=Worksheets(i - 1) '将工作表依次移动 Next Sht.Activate '重新激活目录表 End Sub OK,搞定了。 代码一两行,工作不用忙断肠,说的就是酱紫的情况了,你也动手试一下吧~~ 本文编辑:看见星光 一码不扫, ExcelHome VBA编程学习与实践 |
|