首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel VBA:批量重命名工作表

Excel VBA:批量重命名工作表
EN

Stack Overflow用户
提问于 2011-12-30 20:50:16
回答 2查看 2.4K关注 0票数 1

有没有办法在VBA中批量重命名工作表:

类似于:

代码语言:javascript
运行
复制
sheets(array(1, 2, 3)).name = array("hep", "hey", "heppa!")

将表1、2、3命名为"hep“、”嘿“和"heppa!”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-30 21:14:29

  • 显然不能直接工作,
  • SelectedSheets的一些实验并没有导致任何结果是

这是我能得到的最接近的结果,其他人可能会找到跳过循环的方法

使用下面的标准方法进行更新,包括错误处理-我以前从未尝试过设置这样的工作表集合

Normal Code

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
    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
票数 2
EN

Stack Overflow用户

发布于 2016-03-08 02:23:51

我已经创建了两个宏:

宏1:

代码语言:javascript
运行
复制
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中的名称数量也匹配。

现在,您已准备好运行第二个宏:

代码语言:javascript
运行
复制
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键。

尽情享受

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8679615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档