宏 excel 以基于列表的名称创建新工作表,但如果重复则不创建
Macro excel to create new sheets with names based on a list BUT if repeated do not create
我可以创建 sheets,包括它的名称,基于选定的 "names" 列表,使用以下代码(如下),但是当有重复名称的单元格时,它会创建一个sheet 没有名字和通用 "sheet##"。我希望如果单元格名称重复或已经有一个 sheet 具有该名称(相同的东西),则不要创建新的 sheet.
Sub AddSheets()
Dim cell As Excel.Range
Dim wbToAddSheetsTo As Excel.Workbook
Set wbToAddSheetsTo = ActiveWorkbook
For Each cell In Selection
With wbToAddSheetsTo
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = cell.Value
If Err.Number = 1004 Then
Debug.Print cell.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
End Sub
创建工作表前检查工作表是否存在:
Public Function WorkSheetExists(SheetName As String, wrkbk As Workbook) As Boolean
Dim wrkSht As Worksheet
On Error Resume Next
Set wrkSht = wrkbk.Worksheets(SheetName) 'Attempt to set reference to worksheet.
WorkSheetExists = (Err.Number = 0) 'Was an error generated - True or False?
Set wrkSht = Nothing
On Error GoTo 0
End Function
然后在你的代码中创建它之前检查它是否存在:
Sub AddSheets()
Dim cell As Excel.Range
Dim wbToAddSheetsTo As Excel.Workbook
Set wbToAddSheetsTo = ActiveWorkbook
For Each cell In Selection
**If Not (WorkSheetExists(cell.Value, wbToAddSheetsTo)) Then**
With wbToAddSheetsTo
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = cell.Value
If Err.Number = 1004 Then
Debug.Print cell.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
**End If**
Next cell
End Sub
我可以创建 sheets,包括它的名称,基于选定的 "names" 列表,使用以下代码(如下),但是当有重复名称的单元格时,它会创建一个sheet 没有名字和通用 "sheet##"。我希望如果单元格名称重复或已经有一个 sheet 具有该名称(相同的东西),则不要创建新的 sheet.
Sub AddSheets()
Dim cell As Excel.Range
Dim wbToAddSheetsTo As Excel.Workbook
Set wbToAddSheetsTo = ActiveWorkbook
For Each cell In Selection
With wbToAddSheetsTo
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = cell.Value
If Err.Number = 1004 Then
Debug.Print cell.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
End Sub
创建工作表前检查工作表是否存在:
Public Function WorkSheetExists(SheetName As String, wrkbk As Workbook) As Boolean
Dim wrkSht As Worksheet
On Error Resume Next
Set wrkSht = wrkbk.Worksheets(SheetName) 'Attempt to set reference to worksheet.
WorkSheetExists = (Err.Number = 0) 'Was an error generated - True or False?
Set wrkSht = Nothing
On Error GoTo 0
End Function
然后在你的代码中创建它之前检查它是否存在:
Sub AddSheets()
Dim cell As Excel.Range
Dim wbToAddSheetsTo As Excel.Workbook
Set wbToAddSheetsTo = ActiveWorkbook
For Each cell In Selection
**If Not (WorkSheetExists(cell.Value, wbToAddSheetsTo)) Then**
With wbToAddSheetsTo
.Sheets.Add after:=.Sheets(.Sheets.Count)
On Error Resume Next
ActiveSheet.Name = cell.Value
If Err.Number = 1004 Then
Debug.Print cell.Value & " already used as a sheet name"
End If
On Error GoTo 0
End With
**End If**
Next cell
End Sub