Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

SOLUTION_English Idioms Book_01 |ComboBox|Application.Caller|Caption|
|AutoFilter|Sort|Areas|SpecialCells|UsedRange|
|Application.Proper()|Offset|Resize|Columns|Cells|CodeName|

엑셀로 나만의 영어사전을 만들어 보자

엑셀의 기본만 계속 이야기하면 지루할것이다
필요한 경우 추가하도록 하고,

계속 이야기하지만 이미 앞의 몇개의 페이지
VBA와 엑셀오브젝트의 기본적인것 몇개를 반복,숙달 시키면 되는것이다
그런데 반복숙달 시키는것이 그렇게 쉽지가 않다
문제가 닥쳐, 실전을 겪어야 숙달이 된다
그래서 가벼운 소루션들을 Step By Step으로 만들어
나가면서 숙달 시켜 나가도록 하자
뜸성,뜸성 빼먹지 말고 잘 챙기시면 피가 되고 살이 될것이다

죽기 살기로 영어를 해도 실력이 늘지 않는 원수같은 영어의
IDIOM만을 모아 놓는 엑셀북을 만들어 보자
소설책을 보다가,영화를 보다가,노래 가사를 보다가
잡지책을 보다가 뜸성뜸성 줏어 모은것과
인터넷에서 뭉텅이로 복사해서 옮긴 숙어나 속담이나 스랭,문장들이다
엑셀소루션을 만들다 보면 최소한 1000개는 외우시겠지??!!
영어늘리시고 엑셀늘리시고..!!바라는 바이다
엑셀프로그래밍을 안하시는 분들도
완성될 영어숙어사전은 좋은 도구가 될것으로 기대한다

이제 이렇게 모아 놓은 것들을
어떻게 엑셀로 쉽게 찾아보고 활용하고
학습하는 툴로 만들어 볼것인가..??!!
이것이 이번 소루션의 테마가 될것이다
여기에서 만든것은 워크샵에서는 연속하여 억세스데이타베이스로
변환시키거나 외부프로그램과의 연동부분을 커버해 나갈것이다
이곳에서는 순수한 엑셀만의 오브젝트와 씨름을 할것이다

우선 아래의 그림과 같이 워크시트한장이 데이타창고 역할을 한다



정보는 하나의 시트에 3개의 휠드로
구성하여 보관하였다

[IDIOM]이라는 휠드
[MEANING]이라는 휠드
[EXAMPLE]라는 휠드

나중에 필요한 휠드(해석등)도 추가하면 될것이지만
여기에서는 우선 3개의 휠드만 만들어 놓고 시작하자

데이타만 모아 놓으면 뭐하나??
어떻게 활용할것인지를 엑셀로 만들어 보아야 한다
활용을 위하여 가장 중요한것이 무엇일까??
물론 찾아보기가 쉬워야 할것이다
우선 알파벳으로 해당 숙어들을 찾아내는 것 부터 만들어 보자

아래의 그림과 같이 다른 시트에 찾아보기 쉬트를 만들어 보자



알파벳단추를 크릭하면 해당 숙어들이 콤보상자에 채워지게 한다
우선은 이렇게 찾아보는 간단한것 부터 시작하도록 하자

알파벳 버튼들을 보면..
어떻게 저렇게 정확한 사이즈로 보기 좋게 만들지??!!
수전증있으면 못만들겠는데??!!!
우선 손으로 정확한 규격의 단추를 만드는 방법을 보자
아래의 그림과 같이 열머리를 26열을 선택한다



하나의 열의 폭을 조정하면 모든 열이 똑같은 폭으로 조정되는것을
모르시는 분들은 없겠지..아냐고 물어보면, 놀랍게도
아는 분들이 별로 없다



그리고 양식도구에서 버튼을 Alt키를 누른상태에서
하나의 셀속에 살짝 그려 넣는다
약간의 연습이 필요하다..정확하게 셀의 사이즈에 똑떨어지게 그려진다
그리고 버튼의 캡션을 지우고 "A"라는 문자를 넣고
보기 좋은 문자체로 서식을 한다



그리고 만들어진 버튼을 복사하여 셀을 선택후 붙여넣기를
해 나가면 하나씩 셀크기에 맞게 쏙쏙 들어간다



개체(버튼)를 만들어 넣을때 서식을 아래의 그림과 같이
하여 두면 열의 폭이나 행의 높이를 변화시키면 버튼의 크기도
변한다는 점..확실하게 기억하는것이 좋다
그렇지 않으면 버튼이 커졌다,작아졌다 정성껏 만든것이
공염불이 되버린다
또한 인쇄할때 나타나게 하거나 나타나지 않게 하거나의 문제도
이 서식에서 해결되는것이다
아무튼 이속성에 대하여 유념하고 진행해 보도록 하자
이 속성이 어떤 영향을 미치는지 잘 관리하여야 한다



위의 내용은 수동으로 버튼을 설치하였다

실은 프로그래밍에서는 필요할때마다
즉 사용자가 손상시키거나 문제가 생겼을때 알아내고 이것을
자동으로 복구시키거나 생성되게 하여야 할것이다
사용자가 버튼의 사이즈를 제멋대로 하였다고 할때
보기가 좋지 않다
최대한 사용자가 멋대로 작업을 하더라도 항상 안전한 상태를 유지시키는것이
프로그래밍을 제대로 하는 목적중의 하나가 된다
이 부분은 나중에 소루션을 좀더 완벽하게 만드는 과정에서
하기로 하고 사용자가 버튼을 망가 뜨리든 말든 잠시 잊어 먹고
버튼을 크릭하면 콤보상자에 해당알파벳의 숙어를 리스팅하는
작업을 해보도록 하는것이 이 페이지의 과제다

아래와 같이 버튼을 크릭하면 정보를 찾아서
리스트를 담아놓을 콘트를을 하나 콘트롤도구상자의
콤보상자를 하나 삽입하고 이름을 cboList라고
지어준다
이것도 그릴때 Alt키를 누르고 그리면 원하는 셀의 사이즈에
딱 맞게 그려 넣을 수 있다
그리고 속성창을 통하여 적절히 모양을 낸다


이번 시간에는 버튼을 크릭할때 콤보상자의 리스트를 바꿔주는 것
까지 해보도록 하자



위에서 A열과 1행을 숨긴것은 셀을 선택하는것이 귀찮고
보기 싫다 그래서 버튼을 크릭할때마다 셀의 선택은 A1을
하면 셀의 선택상태가 눈에 안 띄어서 보기 좋다
하나,하나 기능을 추가해 나가면서 실전을 통한 내공을 쌓도록 하자

버튼을 크릭하면 버튼의 Caption속성을 통하여 어떤 알파벳을
크릭하였는지 알아낸다

필요한 도구들은

Application.Caller속성으로 버튼의 이름을 알아내고
Worksheet의 Buttons(버튼의 이름).Caption으로 어떤 알파벳인지 알수 있다
이문자를 이용하여 데이타시트에서 이 문자가 들어 있는 숙어를 찾아야 하는데
일일이 순환하면서 찾을까???아니다..순환을 해도 너무 하면 피곤하다
워크시트오브젝트의 AutoFilter메소드를 사용한다

rngData.AutoFilter 1, "=" & strAlpha & "*"
그런데 이렇게 하면 어떤 문제가 생길까??
우선 휠터전에 정렬을 하면 빠르고 쉽게 처리한다

rngData.Sort Key1:=DATA.Range("A1"), Order1:=xlAscending, Header:=xlYes

이렇게 하여 자동휠터를 수행시키면 또 하나의 문제가 있다
Areas속성이 기억나시는가??
휠터를 하면 떨어진 범위들이 발생하고 Areas.Count값이 1이상이 된다
Areas속성을 잘활용하고 왜 Areas속성이 발생하는지 이해하게 될것이다


English Idioms Book_001.