[Excel VBA] Userform Listbox를 통한 Sheet 검색 및 선택

2020. 8. 3. 00:04업무 스킬/Excel VBA

728x90

안녕하세요. 윤대리입니다.

 

오늘은 제가 필요해서 만드는 겁니다. ^_^ 지금 회사에서 제가 사용하는 Exce내에 Sheets가 100개가 넘어가다 보니

 

Sheets를 검색하고 Select 할 수 있는 Userform이 하나 필요해서 차근차근 만들어 보도록 하겠습니다.

 

1. Userform 실행 시, Sheets의 이름을 ListBox에 정렬

 

일단 위와 같이 이름의 앞자리가 100,200,300으로 된 총 9개의 Sheet가 있는데요. 지금은 뭐

 

예제를 위해서 9개밖에 만들지 않았지만 회사에 가면 100개가 넘어가는 Excel 파일이 있답니다. ㅠㅠ

 

우선 [Userform_Initiallize]를 사용하여 Listbox에 Sheets.name 이 정렬될 수 있는 Code를 작성해 보겠습니다.

 

Userform  / Initialize를 클릭하고 Code를 작성해 봅시다.

 

 

우선 저는 배열을 사용할 때, 0 값을 쓰지 않기 때문에, [Option Base 1]을 기본으로 들어갑니다.

 

[Shts_Name]이라는 String Type의 배열을 하나 정의하였는데요.

 

후속에 Sheets 명을 검색할 때 사용할 것이기 때문에 배열 정의가 필요합니다.

 

위와 같이 작성했다면, Userform 실행 시 아래와 같이 나오게 됩니다. 명령이나 검색창은

 

제가 미리 작성해뒀기 때문에 그냥 보시면 됩니다 

 

Listbox1에 현재 Excel의 Sheets명이 들어가 있는 것을 볼 수 있습니다.

 

그럼 다음으로 검색창에 Sheet가 검색될 수 있도록 코드를 짜 보도록 하겠습니다.

 

여기서 중요한 점은, TextBox_Change 즉 TextBox의 값이 변하면을 먼저 선택하고

 

[Filter]를 사용하여, 검색 엔진(?)을 구축하도록 합니다.

 

코드를 보면 [Filter]에 이전 [Userfrom_Initialize]에서 정의하였던

 

Shts_Name의 String Type배열이 들어가 있는데요

 

[Filter] 함수를 사용 시, SourceArray가 들어가기 때문에 사용한 큰 그림이었습니다.

 

[Filter] 함수의 마지막 True는 TextBox에 적힌 첫 글자가 같은 것은 모두 표기하는 것이고(부분 일치)

 

False는 모든 글자가 같아야 나오는 것이기 때문에(전부 일치) True로 작성할 것을 추천합니다.

 

자 작성하였으면, Userform을 열어 확인하도록 합니다.

 

 

검색창에 100을 입력하였더니, 100의 앞글자를 갖는 Sheets들이 Listbox에 표기된 것을 확인할 수 있습니다.

 

이제 완성했습니다. 옆에 Select Sheet나 Exit는 너무 쉽기 때문에 다들 하실 수 있을 거라고 믿습니다 ^^

 

다음 Post에는 선택된 Sheet를 삭제하고, 또는 생성하는 것을 최종으로 만들도록 하겠습니다.

 

봐주셔서 감사합니다!

728x90