2020. 8. 3. 00:04ㆍ업무 스킬/Excel VBA
안녕하세요. 윤대리입니다.
오늘은 제가 필요해서 만드는 겁니다. ^_^ 지금 회사에서 제가 사용하는 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를 삭제하고, 또는 생성하는 것을 최종으로 만들도록 하겠습니다.
봐주셔서 감사합니다!
'업무 스킬 > Excel VBA' 카테고리의 다른 글
[엑셀 VBA] AdvancedFilter사용하여 중복 제거 (5) | 2021.01.18 |
---|---|
[엑셀 VBA] Function 프리시저 사용 법. (0) | 2020.08.18 |
[엑셀 VBA] Onkey(단축키 설정)을 사용하여 UserForm 열고 닫기 (0) | 2020.07.25 |
[엑셀 VBA] User Form(사용자 정의 폼)의 List Box 활용하기 (0) | 2020.07.17 |
[엑셀 VBA] Private, Public 문을 사용하는 변수 사용 (0) | 2020.06.30 |