基于Sheet1中的活动单元重命名新创建的工作表

时间:2017-07-25 11:28:26

标签: excel-vba rename vba excel

我是VBA的新手并且有一个问题需要解决,我相信这对你来说不仅仅是简单。这是问题所在:

我在A栏中有公司名称表。我想要的是选择公司名称的单元格,单击将运行宏基于模板创建新工作表的按钮,并使用所选名称重命名新创建的工作表Sheet1(公司名称)中的单元格。

宏通常有效,我只有重命名它的问题。你的帮助将大大受到关注。对我的代码的任何评论一般都非常有用。这是代码:

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

2 个答案:

答案 0 :(得分:1)

如果您需要使用ActiveCell,可以使用以下代码:

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

答案 1 :(得分:0)

您已将新工作表复制到最后,因此您可以抓住最后一张工作表:

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

请注意,依赖于选择和活动单元格/工作表/工作簿有风险,并且可能会产生难以诊断的错误。尝试使用单元格地址而不是活动单元格。