programing

모든 Excel 시트 끝에 명명된 시트를 추가하는 방법은 무엇입니까?

telecom 2023. 4. 25. 21:52
반응형

모든 Excel 시트 끝에 명명된 시트를 추가하는 방법은 무엇입니까?

모든 기존 시트 끝에 "Temp"라는 Excel 시트를 추가하려고 하는데 이 코드가 작동하지 않습니다.

Private Sub CreateSheet()
    Dim ws As Worksheet
    ws.Name = "Tempo"
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub

왜 그런지 알려주시겠어요?

다음을 시도해 보십시오.

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

또는 a를 사용합니다.With개체를 반복적으로 호출하지 않도록 하기 위한 절입니다.

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

코드의 나머지 부분에 있는 동일한 워크시트를 호출할 필요가 없다면 위의 내용을 더욱 단순화할 수 있습니다.

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub

이 라이너 하나를 사용하십시오.

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "new_sheet_name"
ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "XYZ"

(워크시트를 추가하면 활성 시트가 됩니다.

다음을 시도해 보십시오.

Public Enum iSide
iBefore
iAfter
End Enum
Private Function addSheet(ByRef inWB As Workbook, ByVal inBeforeOrAfter As iSide, ByRef inNamePrefix As String, ByVal inName As String) As Worksheet
    On Error GoTo the_dark

    Dim wsSheet As Worksheet
    Dim bFoundWS As Boolean
    bFoundWS = False
    If inNamePrefix <> "" Then
        Set wsSheet = findWS(inWB, inNamePrefix, bFoundWS)
    End If

    If inBeforeOrAfter = iAfter Then
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = inName
        Else
            Worksheets.Add(After:=wsSheet).Name = inName
        End If
    Else
        If wsSheet Is Nothing Or bFoundWS = False Then
            Worksheets.Add(Before:=Worksheets(1)).Name = inName
        Else
            Worksheets.Add(Before:=wsSheet).Name = inName
        End If
    End If

    Set addSheet = findWS(inWB, inName, bFoundWS)         ' just to confirm it exists and gets it handle

    the_light:
    Exit Function
    the_dark:
    MsgBox "addSheet: " & inName & ": " & Err.Description, vbOKOnly, "unexpected error"
    Err.Clear
    GoTo the_light
End Function

다음을 사용해 보십시오.

Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = "MySheet"

동일한 이름의 시트가 이미 존재하는지 확인하려면 다음과 같은 함수를 만들 수 있습니다.

Function funcCreateList(argCreateList)
    For Each Worksheet In ThisWorkbook.Worksheets
        If argCreateList = Worksheet.Name Then
            Exit Function ' if found - exit function
        End If
    Next Worksheet
    Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = argCreateList
End Function

함수가 생성되면 기본 하위 항목에서 함수를 호출할 수 있습니다. 예:

Sub main

    funcCreateList "MySheet"

Exit Sub


코드 순서를 전환해 보십시오.워크시트의 이름을 지정하려면 먼저 워크시트를 생성해야 합니다.

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
    ws.Name = "Tempo"
End Sub

감사해요.

그러면 다음 작업을 수행할 수 있습니다.

  1. 이름이 같은 탭을 덮어쓰거나 보존합니다.
  2. 시트를 모든 탭의 끝 또는 현재 탭 옆에 배치합니다.
  3. 새 시트 또는 활성 시트를 선택합니다.

Call CreateWorksheet("New", False, False, False)


Sub CreateWorksheet(sheetName, preserveOldSheet, isLastSheet, selectActiveSheet)
  activeSheetNumber = Sheets(ActiveSheet.Name).Index

  If (Evaluate("ISREF('" & sheetName & "'!A1)")) Then 'Does sheet exist?
    If (preserveOldSheet) Then
      MsgBox ("Can not create sheet " + sheetName + ". This sheet exist.")
      Exit Sub
    End If
      Application.DisplayAlerts = False
      Worksheets(sheetName).Delete
    End If

    If (isLastSheet) Then
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName 'Place sheet at the end.
    Else 'Place sheet after the active sheet.
      Sheets.Add(After:=Sheets(activeSheetNumber)).Name = sheetName
    End If

    If (selectActiveSheet) Then
      Sheets(activeSheetNumber).Activate
    End If

End Sub

다음은 지정된 탭을 현재 워크시트에 빠르고 간편하게 추가하는 방법입니다.

Sheets.Add.Name = "Tempo"

언급URL : https://stackoverflow.com/questions/20697706/how-to-add-a-named-sheet-at-the-end-of-all-excel-sheets 입니다.

반응형