【VBA】순간에 시트의 카피, 이름 변경을 할 수 있는 방법

2599 단어 VBAVBA 매크로Excel
이번에는 쉽게 시트를 복제하는 매크로를 만듭니다.

먼저 소스 코드를 설명합니다.

vb. 시트 복사
Sub シートをコピーする()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("見積書")

Dim wsName As String
wsName = ws.Cells(3, 1).Value

' 同名のワークシートがないことをチェック
If nameCheckFlag(wsName) = True Then

    MsgBox "同名のシートが存在するため、シートを作成できません。"

Else
    ' 「見積書」シートをコピーして一番右に追加する。
    ws.Copy After:=Sheets(Sheets.Count)

    ' 追加したシートがActiveになっているので、ActiveSheetを通じて名前を設定する。
    ActiveSheet.name = wsName

End If

' 見積書シートをアクティブにする
ws.Activate

End Sub

' 同名のワークシートがないかチェックする関数
Function nameCheckFlag(wsName As String) As Boolean
    Dim ws As Worksheet

    For Each ws In Worksheets
        If wsName = ws.name Then
            nameCheckFlag = True
            Exit For
        Else
            nameCheckFlag = False
        End If
    Next ws

End Function



이번에는 다음 샘플 시트를 사용합니다.


매크로를 이동하면 견적서 시트가 복사되고 끝에 회사 이름으로 시트가 복사됩니다.



그러면 자세한 내용을 적어 보겠습니다.

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("견적서")

여기에서 복사 대상 ws를 변수에 저장합니다.

Dim wsName As String
wsName = ws.Cells(3, 1).Value

여기에서는 복사한 시트의 이름을 가져옵니다.
취득명은 회사명으로 하고 싶으므로, 열은 3, 행은 1을 지정하고 있습니다.

If nameCheckFlag(wsName) = True Then

여기에서 같은 이름의 시트가 있는지 확인하고 있습니다.
같은 이름의 시트가 있으면 MsgBox에서 오류 메시지를 표시합니다.
Function nameCheckFlag(wsName As String) As Boolean
    Dim ws As Worksheet

    For Each ws In Worksheets
        If wsName = ws.name Then
            nameCheckFlag = True
            Exit For
        Else
            nameCheckFlag = False
        End If
    Next ws

End Function


위가 같은 이름의 시트가 있는지 확인하는 함수입니다.
For Each ws In Worksheets
        If wsName = ws.name Then
            nameCheckFlag = True
            Exit For
        Else
            nameCheckFlag = False
        End If
    Next ws

For Each를 사용하여 모든 워크시트를 하나씩 확인하고,
같은 이름이 하나라도 있다면 True를 반환하고 Exit For에서 루프를 종료합니다.

ws.Copy After:=Sheets(Sheets.Count)

위에서는 복사한 시트를 끝에 설치합니다.

ActiveSheet.name=wsName

복사하면 복사된 시트가 활성화되므로,
회사 이름이 포함된 wsName으로 시트 이름을 변경합니다.

ws.Activate

복사 및 시트 이름 변경이 완료되면 활성 시트를 견적서로 되돌립니다.

이상이 시트를 복제하는 매크로입니다.

좋은 웹페이지 즐겨찾기