반응형
모든 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
감사해요.
그러면 다음 작업을 수행할 수 있습니다.
- 이름이 같은 탭을 덮어쓰거나 보존합니다.
- 시트를 모든 탭의 끝 또는 현재 탭 옆에 배치합니다.
- 새 시트 또는 활성 시트를 선택합니다.
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 입니다.
반응형
'programing' 카테고리의 다른 글
매개 변수를 Bash 함수에 전달합니다. (0) | 2023.04.25 |
---|---|
여러 조건이 있는 Bash if 문이 오류를 발생시킵니다. (0) | 2023.04.25 |
Angular 자습서에서 파이프 및 탭 방법이란 무엇입니까? (0) | 2023.04.25 |
특정 형식의 파일만 있는 디렉토리를 어떻게 구분합니까? (0) | 2023.04.25 |
파일에서 특정 줄에 대한 커밋 로그를 검색하시겠습니까? (0) | 2023.04.25 |