當前位置:成語大全網 - 新華字典 - EXCEL VBA 小白不知道該怎麽去修改語句 如視頻裏所說的每次都要用公式倒序排列工作表名稱才可以正常排序?

EXCEL VBA 小白不知道該怎麽去修改語句 如視頻裏所說的每次都要用公式倒序排列工作表名稱才可以正常排序?

2021.6.30更新了答案。下圖的效果是:

先查檢L列的工作表名是否存在、或者是否有重復。

如果L列有不存在的、或者有重復的,會提示單元格坐標並且終止程序。

如果L列都是存在的、並且沒有重復的,就會按L列的順序移動工作表。

現在代碼已適應 用純數字命名的 工作表名稱。

Sub 移動工作表()

Dim dic As Object, rng As Range, i%, irow%, iNa$, k%

Set dic = CreateObject("scripting.dictionary") '創建字典

dic.CompareMode = 1 '設置為文字比較模式(即不區分大小寫)

'提取所有工作表名稱放進字典

For i = 1 To Sheets.Count

dic(Sheets(i).Name) = 1

Next

'判斷L列的工作表名是否存在、或是否重復

irow = Range("L" & Rows.Count).End(3).Row '獲取L列最大行號

For Each rng In Range("L2:L" & irow) '在此行修改L列的起始行號

dic(rng & "") = dic(rng & "") + 1

If dic(rng & "") < 2 Then

MsgBox rng.Address(0, 0) & "單元格:" & vbLf & rng & " 不存在!"

Exit Sub '退出程序

ElseIf dic(rng & "") > 2 Then

MsgBox rng.Address(0, 0) & "單元格:" & vbLf & rng & " 有重復!"

Exit Sub '退出程序

End If

Next

'對工作表進格移動操作

iNa = ActiveSheet.Name '記錄索引表的名稱

For Each rng In Range("L2:L" & irow) '在此行修改L列的起始行號

k = k + 1

Sheets(rng & "").Move Before:=Sheets(k)

Next

Sheets(iNa).Select '返回索引表

MsgBox "工作表排序完成!", , "提示"

End Sub