본문 바로가기
∠ 2023년 11월(발행)

| 탭스,엑셀탭명칭 바꾸기

by 젬투 2023. 6. 6.
반응형

ㅇ 엑셀의 탭명칭 자동 바꾸어 주기

차례,

전체

ㅊ프로시저와 매크로 져기

ㅊ한눈요약 져기

ㅊVBA편집창과 이벤트핸들러 져기

ㅊ예시코드 져기

ㅊ코드적용법 져기

ㅇㅇ 프로시저와 매크로

 요기

프로시저(procedure)는 일련의 작업 또는 동작을 수행하기 위해 사용되는 코드 블록을 의미합니다. VBA에서 프로시저는 서브루틴(Subroutine)과 함수(Function)로 구분됩니다.

서브루틴(Subroutine): 일련의 작업을 수행하는 코드 블록으로, 값을 반환하지 않습니다. 주로 명령문의 순차적 실행을 위해 사용됩니다. 예를 들면, 버튼 클릭 시 특정 동작을 수행하는 서브루틴을 작성할 수 있습니다.

함수(Function): 일련의 작업을 수행하고, 값을 반환하는 코드 블록입니다. 함수는 특정한 입력 값을 받아 처리하고 결과 값을 반환하는데 사용됩니다. 예를 들면, 숫자들의 합계를 계산하여 반환하는 함수를 작성할 수 있습니다.

매크로(Macro): 여러 작업을 자동화하기 위해 녹음하거나 작성한 VBA 코드의 집합을 의미합니다. 매크로는 주로 사용자의 동작에 의해 실행되며, 자동화된 작업을 수행하기 위해 사용됩니다. 매크로는 특정 이벤트에 대한 응답으로 실행되거나, 버튼에 할당되어 클릭 시 실행될 수 있습니다. 또한 매크로는 전처리기에서 처리 됩니다. 전처리기의 역할은 소스코드의 변형이나, 처리기 즉 컴파일러(인터프리터 포함) 에게 특정 정보를 전달하는 단계를 의미합니다.

요약하자면, 프로시저는 일련의 작업을 수행하기 위한 코드 블록으로, 서브루틴과 함수로 나뉘어지며 값을 반환할 수도, 반환하지 않을 수도 있습니다. 매크로는 VBA 코드의 집합으로, 여러 작업을 자동화하기 위해 사용되며 특정 이벤트나 사용자 동작에 의해 실행됩니다.

ㅇ한눈 요약

 요기

프로시저 = 서브루틴 + 함수
서브루틴 = 반환값 없을수 있다
함수 = 반환값 있다
매크로 = 전처리기 단계에서 처리됨
전처리기 = 컴파일러 혹은 인터프리터로 처리되기 이전단계

ㅇㅇVBA편집창과 이벤트 핸들러

 요기

ㅡ이벤트라 함은 버튼을 클릭한다던지, 엑셀의 셀의 값이 변한다던지 같은 변화를 일컫습니다.또한 이벤트 핸들러라는 것은 이러한 이벤트에 적절한 처리를 하는 과정을 말합니다.

ㅡ사진(편집창) 처럼 편집창을 보면 상위박스와 하위박스 그리고 그사이 한줄의 박스 이렇게 세부분으로 구성된것으로 볼수 있습니다. 각각의 특성을 사진(편집창) 을 참고하시기 바랍니다. 보충하자면 가운데 박스는 상위박스의 개체들중 선택한 개체를 표시하고 있고, 하단의 박스는 그 개체가 가지고 있는 속성들이라고 생각할 수 있습니다.

사진(편집창)

사진(편집창) 보는법

ㅇㅇ 이벤트 프로시저를 이용한 엑셀탭의 명칭을 바꾸는 코드입니다.

 요기

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim ws As Worksheet
        Dim rng As Range
        Dim cell As Range
        Dim sheetName As String

        ' S1 시트의 C4부터 CN까지의 범위를 감지합니다.
        Set rng = Me.Range(""C4:CN"" & Me.Cells(Rows.Count, ""C"").End(xlUp).Row)

        ' 변경된 범위에 대해서만 처리합니다.
        If Not Intersect(Target, rng) Is Nothing Then
            Application.EnableEvents = False ' 이벤트 처리를 일시적으로 비활성화합니다.

            For Each cell In Target
                ' 해당 셀의 행 번호에 해당하는 B 열의 시트명을 가져옵니다.
                sheetName = Me.Range(""B"" & cell.Row).Value

                ' 시트명이 존재하는 경우에만 C 열에 대입합니다.
                If sheetName <> """" Then
                    Set ws = ThisWorkbook.Sheets(sheetName)
                    cell.Value = ws.Name
                End If
            Next cell

            Application.EnableEvents = True ' 이벤트 처리를 다시 활성화합니다.
        End If
    End Sub

ㅡ코드 적용 및 테스트:

 요기

:: VBA 코드를 작성한 후, VBA 편집기를 닫습니다.

:: S1 시트에서 C4부터 CN까지의 범위에 시트명이나 파일명으로 사용 가능한 임의의 문자열을 입력합니다.

:: B4부터 BN까지의 범위에는 기존의 시트명칭 1부터 N까지의 값을 입력합니다.

:: C4부터 CN까지의 범위에는 입력한 시트명으로 대체되는 것을 확인할 수 있습니다.

위의 예시 코드는 S1 시트의 C4부터 CN까지의 범위에 있는 문자열을 해당 문자열과 동일한 이름을 가진 시트명으로 대체합니다. 이 코드는 S1 시트에서 범위에 입력된 값이 변경될 때마다 실행됩니다. 필요에 따라 코드를 수정하여 적용하실 수 있습니다.

반응형