请问,在excel表中更改名称的工作表怎样按字母排序? 用vba具体怎样操作...
发布网友
发布时间:2023-12-09 06:11
我来回答
共3个回答
热心网友
时间:2024-06-15 11:17
我以前答过这题
Sub paixu()
Dim i%
Dim j%
if Worksheets.Count=1 Then End
For j = 1 To Worksheets.Count - 1
For i = 1 To Worksheets.Count-1
If Sheets(i).Name > Sheets(i + 1).Name Then
Sheets(i + 1).Move Before:=Sheets(i)
End If
Next i
Next j
End Sub
用宏即可,点击录制宏,再停止录制,然后编辑这个空的宏代码,把上述的命令复制进去替代,运行这个宏命令即可。宏也是VBA的一部分。
热心网友
时间:2024-06-15 11:13
sub sortsheets
dim sha as string,i as integer,j as integer,n as integer,tmp as string
n=sheets.count
redim sha(1 to n)
for i=1 to n ‘取得表名,放入数组
sha(i)=sheets.name
next i
for i=1 to n-1 '冒泡排序
for j=i+1 to n
if sha(j)<sha(i) then
tem=sha(i)
sha(i)=sha(j)
sha(j)=tmp
end if
next j
next i
for i=n-1 to 1 '移动最后结果
sheets(sha(i)).move before:=sheets(sha(i+1))
next i
end sub
这个VBA是按升序排序,如果想减序排列,可在函数中设一传递参数,并稍作处理即可。
热心网友
时间:2024-06-15 11:16
我看了下你们的回答 都不全面 如果表名是英文的 可以if sheets(1)>sheets(2)来判断 如果表名是中文的呢????这样就得不到想要的结果!如果是中文名的表名 可以使用以下宏
sub paixu()
dim i,j,k as integer
k=worksheets.count-1
for j=1 to k
for i=1 to k
if strcomp(sheets(i).name,sheets(i+1).name,1)=-1 then '=-1就是升序 =1 就是降序
sheets(i+1).move before:sheets(i)
end if
next i
next j
end sub