Excel 根据Sheet1中的活动单元格重命名新创建的图纸
我是VBA的新手,有一个问题需要解决,我相信这对你们来说将不仅仅是简单的问题。问题是: 我在A列中有公司名称的表格。我想要的是选择公司名称的单元格,单击按钮将运行一个基于模板创建新工作表的宏,并使用Sheet1公司名称中所选单元格的名称重命名新创建的工作表 宏通常可以工作,我只有重命名它的问题。我将非常感谢你的帮助。另外,对我的代码的任何评论都将非常有用。代码如下:Excel 根据Sheet1中的活动单元格重命名新创建的图纸,excel,rename,vba,Excel,Rename,Vba,我是VBA的新手,有一个问题需要解决,我相信这对你们来说将不仅仅是简单的问题。问题是: 我在A列中有公司名称的表格。我想要的是选择公司名称的单元格,单击按钮将运行一个基于模板创建新工作表的宏,并使用Sheet1公司名称中所选单元格的名称重命名新创建的工作表 宏通常可以工作,我只有重命名它的问题。我将非常感谢你的帮助。另外,对我的代码的任何评论都将非常有用。代码如下: Sub NewSheet() Dim wb As Workbook Dim ws As Worksheet Dim active
Sub NewSheet()
Dim wb As Workbook
Dim ws As Worksheet
Dim activeWB As Workbook
Dim FilePath As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Set wb = Application.Workbooks.Open(FilePath)
wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)
activeWB.Activate
ActiveSheet.Name = Worksheets("Arkusz1").ActiveCell.Value
wb.Close False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
您已将新工作表复制到末尾,因此您可以像这样获得最后一张工作表:
Set activeWB = ActiveWorkbook
' You copied sheet 1
wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)
' New sheet is last sheet
Dim sh As WorkSheet
Set sh = activeWB.Sheets(activeWB.Sheets.Count)
' Rename sheet
sh.Name = activeWB.Sheets("Arkusz1").ActiveCell.Value
请注意,依赖选择和活动单元格/工作表/工作簿是有风险的,并且会产生难以诊断的错误。尝试使用单元格地址而不是活动单元格。如果需要使用活动单元格,可以使用以下代码:
Dim ShtName As String
ShtName = ActiveCell.Value2 ' <-- save the value of the ActiveCell
Set wb = Application.Workbooks.Open(FilePath)
wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)
' rename the sheet
activeWB.Sheets(activeWB.Sheets.Count).Name = ShtName
您的代码将打开工作簿。是否要在包含选定单元格的工作簿中创建新工作表,还是要打开一个工作簿并在另一个工作簿中创建新工作表?旁注:避免使用“下一步错误恢复”,这是一种不好的做法,因为它只会使错误静音,但不会处理错误。相反,请使用合适的。谢谢您的快速反应。嗯,在我的工作簿中,模板作为一个新的工作表打开,所以我认为它是一个工作表。我希望它与所选单元格所在的工作簿相同,以新工作表的形式打开。这完全符合我的要求!非常感谢你!谢谢你的评论,我会记住它,因为我将学习VBA。至于你的答案,我不能让它工作,不知道为什么。也许我做错了什么。幸运的是,Shai Rado的答案非常有效。啊,很高兴你的问题得到了解决,作为参考,这个问题的答案有一些很好的建议,可以避免选择它真正有。谢谢!