• 쇼핑몰
  • 커뮤니티
  • 북마크

vb6.0/vba




[vba] [vba] 찾는 글자에 색상을 주는 FIND VBA

하나를하더라도최선을
2019.09.28 15:53 1,053 0

본문



하단에 첨부한 vba 코드를 이용하여 찾는 글자에 색상을 주는 FIND VBA

67d33fee2342d832f7ab2ee38950564d_1569653310_774.JPG

아래 사진처럼 찿는 텍스트가 색상이 변경된걸 확인 할 수 있습니다.
67d33fee2342d832f7ab2ee38950564d_1569653310_664.png


Sub program1472_com()
    Dim C As Range, strAddr As String, S As Integer
    Dim V As Variant, i As Integer
    Application.ScreenUpdating = False  '// 화면의 변화를 업데이트 하지 않음
    With ActiveSheet.UsedRange  '// 사용자 영역 중에서
        .Font.Bold = False  '// 폰트 굵기를 없앰
        .Font.ColorIndex = xlAutomatic  '// 폰트 색상을 초기화
        V = Split(InputBox("검색할 문자를 ,로 분리하여 입력(최대 3개)"), ",")   '// 입력받은 텍스트를 ","로 분리
        If UBound(V) > 2 Then MsgBox "최대 3개의 단어만 지원합니다."End   '// 배열의 갯수가 3개가 넘어가면 종료
        For i = 0 To UBound(V)  '// 배열의 갯수만큼 순환하면서
            Set C = .Find(what:=V(i), lookat:=xlPart)   '// 포함하는 문자를 사용자 영역에서 찿음
            
            If Not C Is Nothing Then    '// 찿는 문자가 있으면
                strAddr = C.Address '// 첫번째 셀 주소를 기억
                Do  '// Find문의 무한루프 시작
                    S = 1   '// 찿을 문자의 스타트 번호
                    Do  '// Font변경의 무한루프 시작
                        With C.Characters(Start:=InStr(S, C, V(i)), Length:=Len(V(i))).Font '// 찿은 문자의 대하여
                        '.Bold = True   '// 굵은 글씨로 표시하고 싶으면
                        .Color = Choose(i + 1, vbBlue, vbRed, vbGreen) '// 글자색 표시,1번째 vbBlue(청색), 2번째 vbRed(빨간색), 3번째 vbGreen(녹색)
                        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
End Sub



댓글목록 0

등록된 댓글이 없습니다.