【VBA】순간에 시트의 카피, 이름 변경을 할 수 있는 방법
먼저 소스 코드를 설명합니다.
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
복사 및 시트 이름 변경이 완료되면 활성 시트를 견적서로 되돌립니다.
이상이 시트를 복제하는 매크로입니다.
Reference
이 문제에 관하여(【VBA】순간에 시트의 카피, 이름 변경을 할 수 있는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RuruVba/items/30c564c9d3f76a52e0f5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)