|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(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
|
|