ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 엑셀 VBA 선택한 셀시트명, 파일명, 위치 알아보는 사용자정의 함수
    Dung--[엑셀] 2023. 4. 6. 16:20

    엑셀 VBA 선택한 셀시트명, 파일명, 위치 알아보는 사용자정의 함수

     

    이번시간엔느 사용자 정의함수를 만들어볼것입니다. 먼저 셀에해당하는 시트명, 엑셀파일명, 시트의 순서로 시트명을 알아보고자 하는 기능입니다. 사용자정의 함수로 만든 이후 엑셀에서 사용하여 보도록 하겠습니다. 이러한 정보를 가져오는 개체가 Application,Caller,Parent 입니다.



    1. 먼저 아무 셀이나 선택을 하게 되면 그 선택한 셀이 포함되어 있는 시트명을 반환하는 소스입니다. 인수로 Optional로 한 이유는 인수값에 아무것도 넣지 않아도 구동이 될 수 있도록 했습니다. 아무 값이 없을 때에는 현재 열려있는 시트에 명을 그대로 가져옵니다.  그 소스가 Application, Caller, Parent, Name 이고 선택한 셀이 있을 경우는 Parent.Name 으로 가져오시면 됩니다. Parent 라는 뜻은 자기를 포함하고 있는 개체를 말합니다.

     


    Function 셀시트명(Optional sel As Range)
        Application.Volatile

        If sel Is Nothing Then
            셀시트명 = Application.Caller.Parent.Name
        Else
           셀시트명 = sel.Parent.Name
        End If
    End Function

     

    2. 다음은 엑셀 파일명을 가져오는 것입니다. 위에서 Parent에 대하여 설명을 하였듯이 시트를 포함하고 있는 것이 문서이겠지요. 문서 개체로  올라가기 위해서는 Parent를 한번 더 사용해주시면 됩니다. 그래서 소스에서 Parent.Parent 가 쓰인것입니다.

     


    Function 셀파일명(Optional sel As Range)
       Application.Volatile
       
        If sel Is Nothing Then
            셀파일명 = Application.Caller.Parent.Parent.Name
        Else
            셀파일명 = sel.Parent.Parent.Name
        End If
    End Function
     

     

    3. 마지막으로 시트명을 가지고 올때는 시트의 순서값으로 이름을 가지고 올 수 있습니다. 아래에 시트의 순서가 바뀌면 이름도 바뀝니다.  Application.Caller.Parent.Parent 로 엑셀문서 개체까지 올라간이후 Sheets()함수를 이용하여 인수로 몇번째 인지 넘기면 이에 대한 정보를 얻을 수 있습니다. 그리고 함수마다 Application.Volatile 가 상단에 추가되어 있는 이유는 참조 하는 값이 변경되었을 함수가 자동으로 재계산하기 위해서 입니다.

     


    Function 시트위치로시트명(sheetNum As Integer)
        Application.Volatile

        If sheetNum > Application.Caller.Parent.Parent.Sheets.count Then
            시트위치로시트명 = "없음"
        Else
            시트위치로시트명 = Application.Caller.Parent.Parent.Sheets(sheetNum).Name
        End If
    End Function

     

    4. 3개의 함수를 추가 했다면 사용자정의 함수 목록에 있을 것입니다. 이것을 활용하여 엑셀에서 값을 추출하여 보겟습니다.

    엑셀 VBA 선택한 셀시트명, 파일명, 위치 알아보는 사용자정의 함수 1

     

    5. 셀을 선택하였을 때 시트명을 가지고 오는 함수를 수행한 화면입니다. 인수로 셀을 선택하라고 대화상자가 뜹니다.

    엑셀 VBA 선택한 셀시트명, 파일명, 위치 알아보는 사용자정의 함수 2

    6. 파일명을 가지고 오는 함수도 위와 같이 합니다. 그리고 시트순서값으로 이름을 가지고오는 예제는 시트위치값을 셀어 넣어두고 함수에 인수로 넘기게 만듭니다.

    엑셀 VBA 선택한 셀시트명, 파일명, 위치 알아보는 사용자정의 함수 3

    7. 이렇게 3개의 함수를 엑셀에서 적용을 하여보았습니다. 하단 시트명을 보시면 제대로 값을 만들었다는 것을 보실 수 있습니다.

    엑셀 VBA 선택한 셀시트명, 파일명, 위치 알아보는 사용자정의 함수 4

    댓글

Designed by Tistory.