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