이번 문제는 이렇다. [ 고래밥 ]단어가 들어가 있는 셀은 고래밥만 빨강색으로 칠하고 Bold 처리를 하고 [ 깡 ] 이 포함된 과자는 중간에 영문자 이후부터 과자의 풀네임에 파란색 폰트 컬러로 변경하고 Bold 처리하는 구문이다.
고래밥을 찾는 구문은 전 시간에 Instr + Characters 구문을 사용한적 있기 때문에 큰 어려움이 없으리라 본다.
If InStr(rngA, Str) Then
Pos = InStr(rngA, Str)
With rngA.Characters(Pos, Len(rngA))
.Font.Color = vbRed
.Font.Bold = True
End With
End If
[ 깡 ] 이 들어있는 과자이름은 과자 이름을 전부다 색상변경을 해야하기 때문에 기초방이라는것을 감안하여 정규식이 아닌 Like 함수를 통해서 알파벳의 위치를 알아낸 후 Instr + Characters 조합으로 해결하였다.
If InStr(rngA, Str2) Then
For i = 1 To Len(rngA)
S = Mid(rngA, i, 1)
If S Like "[A-Z]" Then Exit For
Next i
With rngA.Characters(i + 1, Len(rngA) - i)
.Font.Color = vbBlue
.Font.Bold = True
End With
End If
더보기
Option Explicit
Sub 기초방30()
Dim rngAll As Range: Set rngAll = [b5:b20] '= 전체영역
Dim rngA As Range
Dim Pos&, i&, S$
Dim Str$: Str = "고래밥" '= 기본방 30 키워드
Dim Str2$: Str2 = "깡" '= 기본방 30_1 키워드
For Each rngA In rngAll '= 전체 영역 순환
Haja_Font rngA '= 효과처리
If InStr(rngA, Str) Then '= 키워드가 있다면
Pos = InStr(rngA, Str) '= Pos에 키워드 위치를 담아라
With rngA.Characters(Pos, Len(rngA)) '= 키워드를 조건에 맞게 수정해라
.Font.Color = vbRed
.Font.Bold = True
End With
End If '= 기본방 30 해법
If InStr(rngA, Str2) Then '= 키워드 30_1
For i = 1 To Len(rngA)
S = Mid(rngA, i, 1)
If S Like "[A-Z]" Then Exit For '= 영문자가 있다면 for문을 탈출해라
Next i
With rngA.Characters(i + 1, Len(rngA) - i) '= 영문자의 위치를 뺀 이후부터 문자 수정
.Font.Color = vbBlue
.Font.Bold = True
End With
End If
Next rngA
MsgBox "완료"
End Sub
Function Haja_Font(rngA As Range)
Dim i&, j&
For i = 1 To 100
For j = 1 To Len(rngA)
rngA.Characters(j, 1).Font.ColorIndex = Application.WorksheetFunction.RandBetween(1, 50)
Next j
Next i
rngA.Font.Color = vbBlack
End Function
Characters. 함수를 시리즈로 풀어내고 이해하는데 큰 어렴움이 없을 거라 예상된다.
오늘도 맛있는 코딩 냠냠~~
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #31 [ 소계구하기 ] (0) | 2023.02.15 |
---|---|
[기초방] VBA 100제 #30_1 [ 폰트처리하기_2(정규식) ] (0) | 2023.02.08 |
[기초방] VBA 100제 #29 [ 폰트처리하기 ] (0) | 2023.02.07 |
[기초방] VBA 100제 #28 [ 그룹 통합하기 ] (0) | 2023.02.05 |
[기초방] VBA 100제 #27 [ 미납자 확인 ] (2) | 2023.02.05 |
댓글