Subido por Kyeol Park

엑셀 매크로로 선택영역의 특정 문자만 색 변환하기

Anuncio
태터데스크 관리자
태터데스크 메시지
저장하였습니다.
[엑셀] 매크로로 선택영역의 특정 문자만 색 변환하기 (/307)
Programming Tips/Concepts & Others (/category/Programming%20Tips/Concepts%20%26%20Others)
2013.01.10 11:16
* 목표: 엑셀에서 선택한 영역을 가져와서 각 문자열의 문자 중에 입력한 단어가 있으면 색을 변환하는 매크로 작성
* 작성 환경: 엑셀 2010
: 예를 들면 아래와 같은 엑셀이 있을 경우 'fer'를 빨간색으로 변환하고 싶다.
1. 매크로 생성
: 위의 메뉴바에서 보기 > 매크로 > 매크로 보기를 선택
: 매크로 이름에 'WordColor' 등 매크로 이름을 넣으면 오른쪽에 '만들기' 버튼이 활성화 된다.
: '만들기' 버튼 클릭
: 그러면 아래와 같이 비쥬얼 베이직 모듈 작성 윈도우가 열린다. 여기다가 매크로를 작성한다.
2. 매크로 작성
: 아래의 소스를 매크로에 작성한다.
Sub WordColor()
Dim cell As Range, word As String, startIndex As Integer
word = InputBox(Prompt:="단어를 입력하세요", Title:="문자열 색 변환")
If Len(word) > 0 Then
For Each cell In Selection
startIndex = InStr(1, cell, word, vbTextCompare)
If startIndex > 0 Then
cell.Characters(startIndex, Len(word)).Font.Color = RGB(0, 0, 255)
cell.Characters(startIndex, Len(word)).Font.Bold = True
End If
Next cell
End If
End Sub
: 위의 소스 코드를 각 줄마다 설명해보면,
Dim cell As Range, word As String, startIndex As Integer
: 변수 선언을 하는 부분이다. cell은 이후 사용자가 선택한 영역의 각 셀을 저장할 변수, word는 사용자가 입력할 색을 변환 시킬 문자열, startIndex는 각 셀에 문자열이 있는지 여부와 위치
를 저장할 변수이다.
word = InputBox(Prompt:="단어를 입력하세요", Title:="문자열 색 변환")
: InputBox는 사용자가 입력을 할 수 있는 다이얼로그를 띄우는 명령이다. 위의 명령을 실행하면 아래와 같은 다이얼로그가 띄워진다.
If Len(word) > 0 Then
' 중략
End If
: 사용자가 입력한 문자열 (word)의 길이가 0 이상이면 진행하고, 0이면 진행하지 않는다. 사용자가 그냥 확인을 눌렀거나 취소를 눌렀을 때 해당된다.
For Each cell In Selection
' 중략
Next cell
: Selection은 사용자가 선택한 영역 범위이고, 영역 범위 내의 각 셀을 선택하여 cell에 넣고 '중략 에 들어가는 동작들을 실행한다. 아래는 '중략에 해당하는 부분이다.
startIndex = InStr(1, cell, word, vbTextCompare)
: InStr 함수를 이용해서 셀에 word가 있는지 구분한다. InStr은 만약 cell 안에 word가 있는지 1번째 알파벳부터 비교를 하고 그 시작 위치를 반환하여 startIndex에 저장한다.
If startIndex > 0 Then
' 중략
End If
: cell안에 word가 있으면 '중략의 부분을 실행한다. 아래의 부분이 '중략에 해당한다.
cell.Characters(startIndex, Len(word)).Font.Color = RGB(0, 0, 255)
cell.Characters(startIndex, Len(word)).Font.Bold = True
: 선택 영역 내부의 셀 (cell)의 문자들을 선택하는데, 위에서 startIndex로 얻어온 word의 시작 위치부터 word의 길이만큼 (Len(word)) 선택하여 Font를 수정한다. Font.Color =
RGB(0,0,255)은 색을 파란색으로 설정하게 되고, 이 부분을 수정하면 색이 변환되는 색을 수정할 수 있다. Font.Bold = True로 설정하면 해당하는 범위의 문자들이 볼드체가 된다.
3. 매크로 실행
: 아래와 같이 작성되었으면 일단 엑셀 셀 중에서 문자열 색을 바꾸길 원하는 부분을 먼저 선택한다.
: 아래의 비쥬얼 베이직 화면에서는 윗쪽 중간의 '재생/실행' 버튼이나 "F5"를 눌러서 실행한다.
: 엑셀 쪽에서 실행하려면 보기 > 매크로 > 매크로 보기 > 매크로 선택한 다음에 실행 버튼을 누르면 된다.
: 그럼 위의 InputBox로 인하여 문자열을 입력받게 되고,
: 그러면 엑셀을 보면 선택한 영역에 위의 문자열들이 바뀐 것을 볼 수 있다.
* 주의
- 변환하기 전에 바꾸고자하는 범위를 먼저 선택해야한다.
- 바꾸고 나면 취소가 안되고, 글 서식을 다시 설정해야한다.
- 매크로를 저장하려면 xlsm 파일이나 xls (2003 이전 버전 파일)로 저장해야한다.
- 보안 설정을 해제해줘야한다. 파일 > 옵션 > 보안 센터 > 보안 센터 설정 > 매크로 설정으로 들어가서 '모든 매크로 포함'과 'VBA 프로젝트 개체 모델에 안전하게 액세스할 수 있음'을 체크한
다.
- InStr로 한번만 체크하기 때문에 문자열을 검색했을 때 나온 가장 먼저 나온 부분의 색만 변환하게 된다. 예를 들면 're'의 색을 변환하고자 할 때 reference 가 있으면 첫번째 're'ference 의
색만 변환된다. 뒷쪽을 할지/앞쪽을 할지 아니면 모든 문자열을 바꿀지 여부를 자동화하려면 추가 작업이 필요하다.
- 변환되는 다른 색으로 바꾸고자 한다면 매크로 안에서 RGB(0,0,255) 이 부분의 RGB 값을 바꾸면 된다.
* 아래의 첨부 파일은 매크로가 포함되어있으며, 범위를 선택하고 'CTRL+m'의 단축키를 누르면 실행할 수 있게 되어있다.
WordColor.xlsm (http://unikys.tistory.com/attachment/[email protected])
끝.
공감
이 글을 공유하세요.
좋아요
트윗
Tag
공유하기 15명이 좋아합니다. 친구들이 무엇을 좋아하는지 알아보려면 가입
하기
@unikys 님 팔로우하기
excel (/tag/excel) ,
매크로 (/tag/%EB%A7%A4%ED%81%AC%EB%A1%9C) ,
엑셀 (/tag/%EC%97%91%EC%85%80)
트랙백 0개 , 댓글 9개 가 달렸습니다
 1 2013.03.28 19:14 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=8790055)
엑셀 매크로 제작, 의뢰인 거래사이트 "오투잡"
오투잡은 현재 하루 접속자 4000명이 접속하는 재능거래 사이트 입니다.
오픈한지 얼마되지 않았지만 부업분야 전체 점유율 2위, 국가지원을 받고있습니다.
댓글주소
(/307#comment8790055)
수정/삭제
댓글쓰기
오투잡에서 [컴퓨터/프로그래밍] 카테고리의 판매자를 대모집 중입니다.
카테고리 활성화가 시작 되니, 많은 판매 등록 바랍니다.
오투잡은 네이버에서 "오투잡" 으로 검색 하세요.
 세경 2013.08.26 13:45 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=9236281) 댓글주소 (/307#comment9236281) 수정/삭제
댓글쓰기
안녕하세요! 특정 텍스트 색만 변경하는 매크로를 찾다가(엑셀 초보) 고수님 게시물을 보고 한참 연구끝에 적용해보았네요. 감사합니다 ^.^ 그런데 어떤 셀에서는 특정 글씨 색 이후 모든 글
씨의 색이 투명하게 변경되더라구요ㅜ.ㅜ 제가 잘못실행한 것인지..궁금합니다.
 Unikys (http://unikys.tistory.com)
2013.08.28 14:30 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=9238701)
(/307#comment9238701)
댓글주소
수정/삭제
잘못 실행했다기 보다는 매크로를 잘못 만들었을 확률이 높습니다. RGB(255,255,255) 등과 같이 설정하거나 cell의 값을 설정하는 부분이 있으면 살펴보시는것이 좋을 것 같습니다.
 자갈밭 2013.11.14 19:10 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=9354371) 댓글주소 (/307#comment9354371)
안녕하세요~~!! 감사합니다. 드디어 메크로에 대한 궁금증을 풀게 됐어요ㅠㅠ ㅋㅋ
그런데 위에도 적어두셨듯이, reference에서 뒤에 있는 "re"에도 색깔을 입히고 싶은데,
추가작업이 어떤 것인지도 좀 알려주셨으면 해요~~ ㅠㅠ 너무너무 궁금하네요. 꼭 필요하구요. ㅠㅠ.. ^^;
 Unikys (http://unikys.tistory.com)
수정/삭제
2013.11.15 06:37 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=9355064)
댓글쓰기
댓글주소
(/307#comment9355064)
댓글주소
(/307#comment9359225)
수정/삭제
중간에 If startIndex > 0 Then을 while 문으로 고치고 While 문 안에 startIndex를 추가로 추출하면 됩니다~
Do While startIndex > 0
cell.Characters(startIndex, Len(word)).Font.Color = RGB(0, 0, 255)
cell.Characters(startIndex, Len(word)).Font.Bold = True
startIndex = InStr(1, cell, word, vbTextCompare)
Loop
이렇게 하면 될 것 같은데 테스트는 못해봤습니다 ㅎㅎ
 2013.11.15 10:56
비밀댓글입니다
댓글주소
(/307#comment9355285)
 Unikys (http://unikys.tistory.com)
수정/삭제
2013.11.18 12:54 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=9359225)
수정/삭제
일단 Do While 안에
startIndex = InStr(1, cell, word, vbTextCompare)
는
startIndex = InStr(startIndex + 1, cell, word, vbTextCompare)
이 되어야겠네요.
 자갈밭 2013.11.18 18:20 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=9359549)
정말 감사합니다. ^^ 즐거운 저녁 되세요!!
댓글주소
(/307#comment9359549)
 Ekddmf 2016.06.20 22:51 신고 (/toolbar/popup/abuseReport/?entryId=307&commentId=10998438)
대박이네요!! 정말 감사합니다!! ^^
댓글주소
(/307#comment10998438)
수정/삭제
수정/삭제
댓글쓰기
질문이나 의견을 댓글로 달아 주세요



http://
비밀글
댓글 달기
« (/308)
1 (/408)
···
82 (/311)
LATEST ARTICLES
 [잡담] 10월 10일 근황. (/408) (4)
 [잡담] 3월 29일 근황. (/407) (1)
83 (/310)
84 (/309)
85 (/308)
86
87 (/306)
88 (/305)
89 (/304)
90 (/302)
···
365 (/4)
» (/306)













[시애틀생활] 시애틀 공항(SEA... (/406) (3)
[IT영어] TL; DR. (/405)
[미국생활] SS-5 양식: SSN 신... (/402)
[Bootstrap] CSS 기능: 스타일... (/394) (3)
[C++팁] std::vector.size() =... (/397)
[잡담] 3월 17일 근황: 여유... (/400) (1)
[잡담] 2월 8일 근황: 한국 방... (/398) (4)
[모던C++] typedef vs using... (/381)
[IT영어] #. (/392) (2)
[HTML5 튜토리얼] navigator.g... (/375) (3)
[잡담] 12월 30일 근황. (/390)
[팁] 아이폰의 사운드를 맥북... (/389) (3)
[IT영어] cherry picking. (/388) (2)
 RSS 구독하기 (http://unikys.tistory.com/rss)
좋아요
공유하기 76명이 좋아합니다. 친구들이 무엇을 좋아하는지 알아보려면 가입
하기
검색어를 입력하세요
검색
 카테고리

분류 전체보기 (365) (/category)
 Programming Lecture (56) (/category/Programming%20Lecture)
 Javascript Library (5) (/category/Programming%20Lecture/Javascript%20Library)
 HTML5 (9) (/category/Programming%20Lecture/HTML5)
 Android(안드로이드) 앱 개발 (12)
(/category/Programming%20Lecture/Android%28%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%29%20%EC%95%B1%20%EA%B0%9C
 속깊은 자바스크립트 강좌 (12)
(/category/Programming%20Lecture/%EC%86%8D%EA%B9%8A%EC%9D%80%20%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%
 밑바닥부터 홈페이지 만들기 (7)
(/category/Programming%20Lecture/%EB%B0%91%EB%B0%94%EB%8B%A5%EB%B6%80%ED%84%B0%20%ED%99%88%ED%8E%98%EC%9D%B4%EC%A
 C++ 강좌 (4) (/category/Programming%20Lecture/C%2B%2B%20%EA%B0%95%EC%A2%8C)
 티스토리 반응형 스킨 편집 (3)
(/category/Programming%20Lecture/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC%20%EB%B0%98%EC%9D%91%ED%98%95%20%EC%8A%A4%
 자바스크립트 프레임워크 (4)
(/category/Programming%20Lecture/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%ED%94%84%EB%A0%88%EC%
 Programming Tips (143) (/category/Programming%20Tips)
 C++ (3) (/category/Programming%20Tips/C%2B%2B)
 Web Programming (48) (/category/Programming%20Tips/Web%20Programming)
 Android (23) (/category/Programming%20Tips/Android)
 JAVA (28) (/category/Programming%20Tips/JAVA)
 Objective-C (1) (/category/Programming%20Tips/Objective-C)
 MFC Advanced (16) (/category/Programming%20Tips/MFC%20Advanced)
 MFC Basics (6) (/category/Programming%20Tips/MFC%20Basics)
 MATLAB (2) (/category/Programming%20Tips/MATLAB)
 Database (1) (/category/Programming%20Tips/Database)
 Concepts & Others (14) (/category/Programming%20Tips/Concepts%20%26%20Others)
 일상 (47) (/category/%EC%9D%BC%EC%83%81)
 해외 취업 생활 (8) (/category/%EC%9D%BC%EC%83%81/%ED%95%B4%EC%99%B8%20%EC%B7%A8%EC%97%85%20%EC%83%9D%ED%99%9C)
 미국 생활과 육아 (4)
(/category/%EC%9D%BC%EC%83%81/%EB%AF%B8%EA%B5%AD%20%EC%83%9D%ED%99%9C%EA%B3%BC%20%EC%9C%A1%EC%95%84)
 지출 프리뷰_리뷰 (27)
(/category/%EC%9D%BC%EC%83%81/%EC%A7%80%EC%B6%9C%20%ED%94%84%EB%A6%AC%EB%B7%B0_%EB%A6%AC%EB%B7%B0)
 Mini Project (14) (/category/Mini%20Project)
 VJLib(Vanilla Javascript) (2) (/category/Mini%20Project/VJLib%28Vanilla%20Javascript%29)
 NY-School (11) (/category/Mini%20Project/NY-School)
 웹성능최적화 (1) (/category/Mini%20Project/%EC%9B%B9%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%81%ED%99%94)
 Photography (36) (/category/Photography)
 Studying about K100D (13) (/category/Studying%20about%20K100D)
 My Photo Stories (12) (/category/My%20Photo%20Stories)
 At Home (2) (/category/My%20Photo%20Stories/At%20Home)
 In Seoul (9) (/category/My%20Photo%20Stories/In%20Seoul)
 Florida, US (1) (/category/My%20Photo%20Stories/Florida%2C%20US)
 Artificial Intelligence (13) (/category/Artificial%20Intelligence)
 Bayesian Network (1) (/category/Artificial%20Intelligence/Bayesian%20Network)
 Dynamic Bayesian Network (7) (/category/Artificial%20Intelligence/Dynamic%20Bayesian%20Network)
 Neural Network (4) (/category/Artificial%20Intelligence/Neural%20Network)
 Algorithm (3) (/category/Algorithm)
 Server Management (6) (/category/Server%20Management)
 GRE (21) (/category/GRE)
 Writing[Issue] (1) (/category/GRE/Writing%5BIssue%5D)
 Writing[Argue] (11) (/category/GRE/Writing%5BArgue%5D)
 Verbal (4) (/category/GRE/Verbal)
 UnikysFlashCard (2) (/category/GRE/UnikysFlashCard)
 잡담 (1) (/category/%EC%9E%A1%EB%8B%B4)

프리셀 (0) (/category/%EC%9E%A1%EB%8B%B4/%ED%94%84%EB%A6%AC%EC%85%80)
 링크




hackerrank.com (https://www.hackerrank.com/)
algospot.com (http://algospot.com)
dovelet.com (http://dovelet.com)
jungol.co.kr (http://www.jungol.co.kr/site/)
 태그목록
K100D (/tag/K100D), 사진 (/tag/%EC%82%AC%EC%A7%84), lecture (/tag/lecture), TIP (/tag/TIP), Android (/tag/Android), gre (/tag/gre),
mini project (/tag/mini%20project), c++ (/tag/c%2B%2B), 자바스크립트 (/tag/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8),
속깊은 자바스크립트 강좌
(/tag/%EC%86%8D%EA%B9%8A%EC%9D%80%20%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EA%B0%95%EC%A2%8C
HTML5 튜토리얼 (/tag/HTML5%20%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC), HTML5 (/tag/HTML5), Javascript (/tag/Javascript),
샷 (/tag/%EC%83%B7), 안드로이드 (/tag/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C), Python (/tag/Python),
뽐뿌 (/tag/%EB%BD%90%EB%BF%8C), php (/tag/php),
안드로이드 앱 개발 기초
(/tag/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%20%EC%95%B1%20%EA%B0%9C%EB%B0%9C%20%EA%B8%B0%EC%B4%88),
삼식이 (/tag/%EC%82%BC%EC%8B%9D%EC%9D%B4), ny-school (/tag/ny-school), 팁 (/tag/%ED%8C%81), java (/tag/java), 서울 (/tag/%EC%84%9C%EC%9A%B8),
google app engine (/tag/google%20app%20engine), Writing (/tag/Writing), 강좌 (/tag/%EA%B0%95%EC%A2%8C), gae (/tag/gae), GX-10 (/tag/GX-10),
탐론 17-50 (/tag/%ED%83%90%EB%A1%A0%2017-50)
글 보관함





2017/10 (/archive/201710) (1)
2017/03 (/archive/201703) (7)
2017/02 (/archive/201702) (1)
2017/01 (/archive/201701) (3)
2016/12 (/archive/201612) (4)
BLOG VISITORS
 Total : 1,951,681
 Today : 369
 Yesterday : 380
좋아요
공유하기 76명이 좋아합니다. 친구들이 무엇을 좋아하는지 알아보려면 가입
하기
Copyright © 2016 Unikys (http://unikys.tistory.com). All Rights Reserved.
Descargar