有没有办法在VBA中批量重命名工作表:
类似于:
sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!")
将表1、2、3命名为"hep“、”嘿“和"heppa!”
发布于 2011-12-30 21:14:29
这是我能得到的最接近的结果,其他人可能会找到跳过循环的方法
使用下面的标准方法进行更新,包括错误处理-我以前从未尝试过设置这样的工作表集合
Normal Code
Sub Normal()
Dim strShtOld()
Dim strShtNew()
Dim sht As Worksheet
Dim lngSht As Long
strShtNew = Array("hep", "hey", "heppa!")
strShtOld = Array("Sheet1", "Sheeta2", "Sheet3")
On Error Resume Next
For lngSht = LBound(strShtOld) To UBound(strShtOld)
Set ws = Nothing
Set ws = Sheets(strShtOld(lngSht))
If Not ws Is Nothing Then ws.Name = strShtNew(lngSht)
Next lngSht
End Sub
为什么批量重命名,好奇心还是你有这么多的重命名要做,你关心的是代码运行时?
Array Effort
Sub ArrayEx()
Dim varShts
Dim varSht
Dim strArray()
strArray = Array("hep", "hey", "heppa!")
Set varShts = Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
For varSht = 1 To varShts.Count
varShts(varSht).Name = strArray(varSht - 1)
Next
End Sub
发布于 2016-03-08 02:23:51
我已经创建了两个宏:
宏1:
Sub Sheetlist()
Dim x As Integer
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "sheetlist"
Range("A1").Select
ActiveCell.FormulaR1C1 = "Sheet List"
Range("C1").Select
ActiveCell.FormulaR1C1 = "New List"
For x = 1 To Worksheets.Count
Cells(x + 1, 1).Value = Worksheets(x).Name
Next x
End Sub
此宏在当前工作簿中创建一个名为"sheetlist“的工作表,其中包含当前工作簿中所有工作表的列表。此工作表还有一个标题为“新建列表”(C1)的列,您可以在该列中输入任意多个工作表名称。
您现在可以做的是从列A1中删除要从重命名过程中排除的名称。确保A和C列中没有空格,并且A和C中的名称数量也匹配。
现在,您已准备好运行第二个宏:
Sub batchrename()
'
' batchrename Macro
'
Dim OldSheetName As String
Dim NewSheetName As String
Dim SheetCount As Integer
Dim NewSheetList As String
NewSheetList = InputBox("How many names are there?") + 1
For SheetCount = 1 To Range("C2:C" & NewSheetList).Count
OldSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 1)
NewSheetName = Sheets("sheetlist").Cells(SheetCount + 1, 3)
Sheets(OldSheetName).Select
ActiveSheet.Name = NewSheetName
Next SheetCount
End Sub
此宏将转到sheetlist A中列出的名称,并将其更改为sheetlist C中列出的名称。提示符将询问您名称列表的位置,在C列中输入名称的数量,然后按enter键。
尽情享受
https://stackoverflow.com/questions/8679615
复制相似问题