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

2016. 7. 24. 22:45·기타
반응형

주소: http://unikys.tistory.com/307


* 목표: 엑셀에서 선택한 영역을 가져와서 각 문자열의 문자 중에 입력한 단어가 있으면 색을 변환하는 매크로 작성

 

* 작성 환경: 엑셀 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

반응형
저작자표시 (새창열림)

'기타' 카테고리의 다른 글

[엑셀] 엑셀 #N/A안나오게 하는 방법  (0) 2016.07.29
[엑셀] 엑셀 작업영역 제한하기  (0) 2016.07.27
[엑셀] 전체 숨기기 취소  (0) 2016.07.24
[엑셀] 엑셀 셀 병합, 엑셀 셀 합치기, 엑셀 자동 병합, 엑셀 자동 병합 매크로  (0) 2016.07.24
N 스크린이란?  (0) 2016.06.07
'기타' 카테고리의 다른 글
  • [엑셀] 엑셀 #N/A안나오게 하는 방법
  • [엑셀] 엑셀 작업영역 제한하기
  • [엑셀] 전체 숨기기 취소
  • [엑셀] 엑셀 셀 병합, 엑셀 셀 합치기, 엑셀 자동 병합, 엑셀 자동 병합 매크로
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    AWS
    대통령
    수제버거존맛
    수제버거맛집
    판교역
    마케팅
    보안가이드
    런치
    맛집
    무역전쟁
    쥬쥬랜드
    수제버거
    상호관세
    판교
    돈까스
    복리후생
    이재곧죽습니다
    유니티
    판교맛집
    점심
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
[엑셀] 매크로로 선택영역의 특정 문자만 색 변환하기
상단으로

티스토리툴바