차례:
비디오: 엑셀VBA강의] VBA 함수(Method)란? + 사용예제 | 오빠두엑셀 VBA 1-7 2024
통합 문서에서 이름이 지정된 셀과 범위를 많이 사용하는 경우 Excel에서 각 이름의 세부 정보를 나열 할 수있는 방법이 없음을 알면 놀랄 수 있습니다. 유용한 정보는 이름 관리자 대화 상자에 표시되지만이 정보를 인쇄 할 수있는 방법으로 표시 할 수는 없습니다.
여기에 제공된 VBA 코드는 모든 통합 문서에 정의 된 이름을 설명하는 유용한 보고서를 생성합니다.
예제 이름 보고서
여기에 이름 보고서의 예가 나와 있습니다.
새 워크 시트에 작성된 보고서에는 각 이름에 대해 다음 정보가 포함됩니다.
-
Name: 이름.
-
참조: 이름 정의. 일반적으로 이것은 셀이나 범위이지만 이름은 수식을 정의 할 수도 있습니다.
-
셀: 명명 된 범위에 포함 된 셀의 수입니다. 명명 된 수식의 경우이 필드에는 # N / A가 표시됩니다.
-
범위: 이름의 범위 - 통합 문서 또는 이름이 유효한 특정 워크 시트의 이름.
-
숨김: 이름이 숨겨져 있으면 true입니다. 숨겨진 이름은 일부 추가 기능 (예: 해 찾기)에서 만들어지며 이름 관리자 대화 상자에 표시되지 않습니다.
-
오류: 이름에 잘못된 참조가 포함되어 있으면 true입니다.
-
링크: 클릭하면 명명 된 범위가 활성화되는 하이퍼 링크입니다. 셀 또는 범위를 참조하는 이름 만 링크를 포함합니다.
-
Comment: 이름에 대한 설명 (있을 경우).
VBA 코드
이 코드를 사용하려면 Alt + F11을 눌러 Visual Basic Editor를 활성화합니다. 그런 다음 삽입 → 모듈을 선택하여 새 VBA 모듈을 삽입하십시오. 코드를 복사하여 새 모듈에 붙여 넣습니다.
Sub GenerateNameReport () '통합 문서의 모든 이름에 대한 보고서를 생성합니다.'(테이블 이름은 포함하지 않습니다.) Dim n As Name Dim Row As Long ActiveCommand. 이름. Count = 0 Then MsgBox "활성 통합 문서에 정의 된 이름이 없습니다. "Exit Sub End If '통합 문서가 보호되면 종료하십시오. ActiveWorkbook 인 경우. ProtectStructure Then MsgBox "통합 문서가 보호되어 있기 때문에 새 시트를 추가 할 수 없습니다. "Exit Sub End If '보고서 ActiveWorkbook에 대한 새 시트를 삽입하십시오. 워크 시트. ActiveSheet를 추가하십시오. 이동 후: = Sheets (ActiveWorkbook. Sheets. Count) ActiveWindow. DisplayGridlines = False '첫 번째 줄 제목 추가 ("A1: H1"). 범위와 병합 ("A1"). Value = "Name Report for:"& ActiveWorkbook. 이름. 세례반. 크기 = 14. 글꼴. Bold = True. HorizontalAlignment = xlCenter End With '두 번째 제목 줄 ("A2: H2")을 추가하십시오. 범위와 병합 ("A2"). Value = "Generated"& Now. HorizontalAlignment = xlCenter End With '헤더 추가 Range ("A4: H4") = Array ("Name", "RefersTo", "Cells", "Scope", "Hidden", "Error", "Link" Comment ") 'Loop 이름 Row = 4 On Error Each 다음에 대해 ActiveWorkbook에서 다시 시작합니다.이름 행 = 행 + 1 '열 A: 이름 n 인 경우. 이름은 "*! * "Then Cells (Row, 1) = 분할 (명칭,"! ") (1) '시트 이름을 제거 Else Cells (Row, 1) = n. 이름 끝 '열 B: RefersTo 셀 (행, 2) = "'"& n. RefersTo '열 C: 셀 수 CellCount = CVErr (xlErrNA)'명명 된 수식의 반환 값 CellCount = n. RefersToRange. CountLarge 셀 (Row, 3) = CellCount '열 D: 범위 n 인 경우. 이름은 "*! (행, 4) = 바꾸기 (셀 (행, 4), " '", "") 셀 이름 (셀, 행 4) = 분할 (이름, "!") (0) '아포스트로피 제거 Else Cells (Row, 4) = "통합 문서"End If'열 E: 숨겨진 상태 셀 (Row, 5) = Not n. Visible 'Column F: Erroroneous name 셀 (Row, 6) = n. RefersTo Like "* [#] REF! * " '열 G: 응용 프로그램이 아닌 경우 하이퍼 링크. IsNA (Cells (Row, 3)) 그런 다음 ActiveSheet. 하이퍼 링크. 추가 _ 앵커: = 셀 (행, 7), _ 주소: = "", _ SubAddress: = n. Name, _ TextToDisplay: = n. 이름 끝 '열 H: 주석 셀 (행, 8) = n. Comment Next n '테이블을 ActiveSheet로 변환하십시오. ListObjects. _ SourceType: = xlSrcRange, _ Source: = Range ("A4")를 추가하십시오. CurrentRegion '열 너비 열 ("A: H")을 조정합니다. EntireColumn. AutoFit End Sub
보고서 생성
GenerateNameReport 프로 시저를 실행하면 보고서가 활성 통합 문서의 새 워크 시트에 생성됩니다. 코드는 보고서의 이름이 들어있는 통합 문서에있을 필요는 없습니다.
이 코드가 유용하다고 생각되면 개인용 매크로 통합 문서에 저장하거나 추가 기능을 만들 수 있습니다.