-
VBA 유튜브 학습기 13 - 말하는 엑셀! 더블 클릭하면 셀 안의 데이터를 읽어 주는 파일 만들기공부하는 노예/VBA(유튜브 무료 강의) 2021. 4. 22. 08:27728x90
엑사남 님 강의 13강 듣고 왔습니다.
요새 강의 듣는 페이스가 좀 떨어졌는데...
공부를 소홀히 한 게 아니라 배운 VBA 코드들을 활용해 실무에 필요한 파일을 만들어 보다 보니까....
초보라 코드 뭐 하나 짜서 돌리면 꼭 디버그 오류 나고 ㅋㅋㅋ
들여다보면서 고치고 하느라 시간을 많이 날려 먹었네요. 😫
[출처] ???(커뮤니티에서 주웠어요...출처 아시는 분 제보 좀...) 이게 어떤 심정인 건지 이해가 가더라고요 ㅋㅋㅋ
그래도 이제 코드 보면 대~애충 뭔 말인지 알겠는 게 한 줄 정도 있다는 거에 혼자 뿌듯해 하고 있습니다.
13강은 셀에 입력된 텍스트를 더블 클릭하면 유저폼(버튼이 있는 알림창)이 나타나고
[듣기] 버튼을 누르면 셀에 입력된 텍스트를 읽어 주는 이벤트에 대한 내용입니다.
신기하긴 한데 이걸 실무에서 쓸 일이 있을까 싶으면서도
또 궁금하기도 하고 난 잡기능에 관심이 많으니까 열심히 들었습니다.
먼저 데이터는 이렇게 구성돼 있습니다.
Alt + F11 누르고 익숙한 VBA 편집 창으로 갑니다.
그리고 왼쪽의 프로젝트 목록에서 현재 데이터가 입력된 시트(전 Sheet1에 입력돼 있어서 Sheet1)에서 마우스 오른쪽 버튼 클릭 후 [삽입] - [사용자 정의 폼]을 순서대로 클릭합니다.
그럼 이렇게 유저폼이 자동으로 나타나는데요.
적당하게 사이즈 조정을 해 주고요.
레이블 버튼(빨간색 네모 부분) 도구 상자에서 [레이블] 버튼을 클릭합니다.
그리고 유저폼에 대고 적당한 크기로 드래그해 줍니다.
'Label1' 텍스트 삭제 그럼 이렇게 레이블 창이 생기는데 기존에 입력돼 있던 기본 텍스트(Label 1)를 삭제해 주고요.
Font(파란색 네모) 클릭하면 [...] 버튼(빨간색 네모)이 나타납니다. 우리가 어떤 민족입니까?
폰트, 정렬 안 맞는 거 못 참는 문과 사무직 민족답게....
VBA 편집 창 왼쪽 하단에 있는 속성 메뉴로 가서
Font를 클릭하면
위 이미지의 빨간색 네모친 부분처럼 [...] 버튼이 나타나거든요.
[...] 버튼을 누릅니다.
그럼 이렇게 글꼴 편집 창이 나타나는데.
적당한 폰트로 폰트는 굵게, 크기는 14 정도로 설정해 봅니다.
폰트만큼 중요한 게 뭐다?
정렬!!!!
저 정말 공용으로 쓰는 파일에서 정렬 망가뜨리는 사람 너무 싫거든요.
속성 메뉴에서 TextAlign 메뉴로 갑니다. (꽤 아래쪽에 있어요.)
그리고 TextAlign을 '2 - fmTextAlignCenter'로 설정합니다.
뭐 대충 가운데 정렬하겠단 얘기 같네요. 🙄
유저폼의 레이블 창에 가서 텍스트를 넣어 보면
이렇게 가운데 정렬돼서 굴림, 볼드, 14pt로 텍스트가 나타납니다.
편안😊
저 텍스트가 들어가는 부분인 레이블 창이 테두리가 있으면 조금 더 보기 편안할 거 같죠?
속성 메뉴에서 'BorderStyle'로 가고요.
BorderStyle을 '1 - fmBorderStyleSingle'로 설정합니다.
그럼 이렇게 레이블 창에 테두리가 생겼어요.
유저폼이라면 응당 뭔가 버튼이 있어야겠죠?
버튼을 추가해 봅니다.
[명령 단추] 버튼(빨간색 네모 부분) 도구 상자에서 [명령 단추] 버튼을 클릭합니다.
적당한 크기로 가운데 정렬에 집착하며 버튼을 그려 주고요.
버튼명을 '확인'으로 바꿔 줍니다.
이렇게 하면 대충 디자인 사전 작업이 끝났어요.
다시 VBA 편집 창 왼쪽의 프로젝트 목록에서 데이터가 있는 시트인 Sheet1을 더블 클릭해 줍니다.
그럼 이런 창이 나타나는데.
'(일반)'을 클릭하고 'Worksheet'로 바꿔 줍니다.
오른쪽의 '(선언)'은 'BeforeDoubleClick'으로 바꿔 주고요.
그럼 이렇게 Sub문이 자동으로 두 개가 생성돼 있는데.
BeforeDoubleClick에 대한 Sub문(위)만 남기고 나머지(아래)는 지워 줍니다.
그리고 코드를 작성해 볼게요.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target = "" Then Exit Sub
UserForm1.Show
End SubIf Target = "" Then Exit Sub
'선택된 셀(Target)이 비어 있다면("") Sub문을 빠져나가라.(Exit Sub)
UserForm1.Show
'그렇지 않은 경우에는 유저폼1을 보여줘라.
작성한 후 실행해 보면
빈 셀을 더블 클릭했을 때는 아무 반응이 없다가 텍스트가 입력된 셀을 더블 클릭하면 유저폼이 나타납니다.
현재는 레이블 창이 비어 있는 상태로 나타나는데요.
유저폼의 레이블 창에는 셀에 입력돼 있는 텍스트가 나타나도록 코드를 추가해 볼게요.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target = "" Then Exit Sub
UserForm1.Label1 = Target
UserForm1.Show
End SubUserForm1.Label1 = Target
'유저폼1의 레이블1 창은(UserForm1.Label1) 선택된 셀 값이다.(Target)
코드를 추가하고 실행해 보면
이렇게 텍스트가 입력돼 있는 셀을 더블 클릭 시 레이블 창에 해당 셀에 입력된 텍스트가 나타나는 걸 확인할 수 있습니다.
우린 텍스트를 읽어 주는 코딩을 할 것이므로
다시 유저폼 편집 창으로 가서 [확인] 버튼을 [듣기] 버튼으로 바꿔 줍니다.
그다음 버튼을 눌렀을 때 어떤 동작을 할 것인지 지정해 줘야 하겠죠?
버튼을 더블 클릭합니다.
그럼 이렇게 버튼을 눌렀을 때의 동작 코드를 작성할 수 있는 창이 나타납니다.
코드를 작성해 줄게요.
Private Sub CommandButton1_Click()
Application.Speech.Speak Selection
Unload Me
End SubApplication.Speech.Speak Selection
'선택된 셀(Selection)을 읽고 말하라.(Speech.Speak)
Unload Me
'그다음 유저폼을 종료하라.
코드를 실행해 보면
텍스트가 입력된 창을 더블 클릭하면 유저폼이 나타난고.
[듣기] 버튼을 누르면 해당 텍스트를 읽어 주는데요.
처음에 눌렀을 때 음성을 읽어 주는 게
예전에 유행하던 프로인 '남녀탐구생활'이란 프로그램의 성우 분처럼
약간 기계적(?)으로 읽어 주더라고요.
연식이 느껴지는 프로그램 예시.....
암튼 읽어 주는 목소리가 뭔가 이상하다면
[제어판] - [음성 인식] - [텍스트 음성 변환]에 가서
설정을 'Microsoft Zira Desktop - English (United States)'로 바꿔 주면 됩니다.
그럼 영어 문장을 아주 자연스럽게 읽어 주더라고요.
13강 강의 내용은 여기까지였고요.
전 이제 14강 들으러 갑니당
반응형'공부하는 노예 > VBA(유튜브 무료 강의)' 카테고리의 다른 글
VBA 유튜브 학습기 15 - For Each, Resize, Offset 활용해 콤보 박스에서 선택한 데이터에 대한 행 색상 변경하기 (0) 2021.04.28 VBA 유튜브 학습기 14 - 엑셀 마우스 오른쪽 버튼 클릭하면 차트가 나타나게 하는 법(RightClick 이벤트) (0) 2021.04.27 VBA 유튜브 학습기 12 - 드롭다운 메뉴에서 원하는 셀 값을 선택하면 그 셀 값이 포함된 데이터 행 음영으로 표시하기(Change 이벤트) (0) 2021.04.19 VBA 유튜브 학습기 11 - 선택한 셀, 범위, 행의 컬러(채우기 색) 바뀌게 하는 방법 (0) 2021.04.15 VBA 유튜브 학습기 10 - 오픈 이벤트와 유저폼으로 엑셀에 로그인 창 만들기 (0) 2021.04.13