나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 voice (angel1234)

추천:  2
파일:     조회:  1272
제목:   [RE]문장?내?특정?단어의?글자색을?변경하고?싶습니다.
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007): 2007

* 아래줄에 질문을 작성하세요 >>

안녕하세요,
갑작스럽게 VBA를 이용해야 하는 일로 관련 여러 VBA를 검색하여 적용해 보았습니다만, VBA를 제대로 이해하지 못하고 있어 어렵습니다. 도움 부탁드립니다.

[문의내용]
- (가)문장(ex. A2, B2) 내에 (나)검색단어(ex. D2, E2, F2, G2...)가 포함시 단일색(빨간색)으로 해당 단어만 색깔을 변경하고자 합니다.
- 각 행별 문장에 대해 검색하는 단어의 수도 제각기 다릅니다.
- 약 2천개 이상의 문장이 들어가고, 일부 행에서는 검색단어가 10개 이상이 될 수도 있습니다.
- 검색으로 참고하고자 했던 VBA 내용과 자세한 내용은 샘플 첨부 드립니다.

첨부. (샘플) 글자색 변경

감사합니다.
==============[benibe님 글에 대한 답변입니다]==============
' 아래 참조하세요. 
기존소스에서  이부분만 추가하였습니다.   '===== 추가

Sub Character_ColorSet()
    Dim rngTarget As Range '//대상 범위 지정변수
    Dim C As Range
    Dim FindText As String
    Dim strAddr As String
    Dim S As Integer

    Application.ScreenUpdating = False  '//화면 업데이트 일시 정지
    
    For j = 2 To 5  '===== 추가    행갯수 ( 찾고자하는 대상 A,B행의 row 수 )
    Set rngTarget = ActiveSheet.Range("A" & j & ":B" & j)  '===== 추가
   ' Set rngTarget = ActiveSheet.UsedRange

    For k = 4 To 10   '===== 추가    검색단어 열 
    FindText = Cells(j, k)
    Dim V As Variant
    V = Split(FindText, ",")

  
    With rngTarget
        .Font.Bold = False
      '  .Font.ColorIndex = xlAutomatic    
        Dim i As Integer
        For i = 0 To UBound(V)
            Set C = .Find(what:=V(i), lookat:=xlPart)

            If Not C Is Nothing Then
                strAddr = C.Address '// 찾은 셀의 주소를 변수에 넣음
                Do
                    S = 1
                    Do
                        With C.Characters(Start:=InStr(S, C, V(i)), Length:=Len(V(i))).Font
                        .Bold = True   '// 굵은 글씨로 표시하고 싶으면
                        .Color = vbRed
                        End With
                        S = S + InStr(S, C, V(i))
                    Loop While InStr(S, C, V(i))
                    Set C = .FindNext(C) '// 다음 찾은 데이터를 변수에
                Loop While Not C Is Nothing And strAddr <> C.Address
                '// 검색 일치하지 않거나 처음 찾은 셀이 아닐때까지 무한 반복
            End If
        Next
    End With

    Next k  '===== 추가
    Set rngTarget = Nothing '// 변수 초기화
    
Next j    '===== 추가
    Rows("1:1048576").AutoFit
End Sub


 
[불량 게시물 신고]  
benibe확인 해 주신 내용으로 잘 적용 됩니다. 참고하여 공부하는데 많은 도움이 될 것 같습니다. 감사합니다.01-18 (22:45)
삭제 ■신고
        
  

작성일 : 2022-01-18(20:42)
최종수정일 : 2022-01-18(20:52)
 


 ◎ 관련글

  제 목   작성자   날짜
문장 내 특정 단어의 글자색을 변경하고 싶습니다. benibe 2022-01-16
[RE]문장?내?특정?단어의?글자색을?변경하고?싶습니다. voice 2022-01-18
[RE]문장?내?특정?단어의?글자색을?변경하고?싶습니다. 잡초 2022-01-18
[RE]문장?내?특정?단어의?글자색을?변경하고?싶습니다. 잡초 2022-01-19