해결 M365윈도우10
앞 단어의 받침 유무에 따라 잘못 사용된 (을/를) 검사 매크로 만들기 질문
앞 글자에 받침이 있으면 '을', 없으면 '를'로 쓰이는데
잘못 사용된 곳을 검사할 수 있는 매크로를 만들려고 합니다.
계속 수정해 보고는 있습니다만, 어째서인지 매크로를 돌리면 글자가 사라지고 하는 현상 때문에
도저히 감이 안 잡혀서 고수 님들께 도움을 구하고자 합니다.
잘못 사용된 곳을 검사할 수 있는 매크로를 만들려고 합니다.
계속 수정해 보고는 있습니다만, 어째서인지 매크로를 돌리면 글자가 사라지고 하는 현상 때문에
도저히 감이 안 잡혀서 고수 님들께 도움을 구하고자 합니다.
코
해
Z
댓글 4
Sub CheckWordPP() Dim C As Range, vData As Variant, vError As Variant, i As Long, iCnt As Long For Each C In Selection iCnt = 0 ReDim vError(1 To 1) vData = Split(Replace(Replace(C.Value2, chr(10), " "), ",", " "), " ") For i = LBound(vData) To UBound(vData) If (Right(vData(i), 1) = "을" And HasFC(Left(Right(vData(i), 2), 1)) = False) Or _ (Right(vData(i), 1) = "를" And HasFC(Left(Right(vData(i), 2), 1)) = True) Then iCnt = iCnt + 1 ReDim Preserve vError(1 To iCnt) vError(iCnt) = vData(i) End If Next i '// 검토할 부분에 색칠하기 iCnt = 0 For i = 1 To UBound(vError) iCnt = InStr(iCnt + 1, C.Value2, vError(i), vbTextCompare) C.Characters(iCnt, Len(vError(i))).Font.Color = vbRed C.Characters(iCnt, Len(vError(i))).Font.Bold = True Next i '// 검토할 단어를 옆에 나열하기 C.Offset(, 1).Resize(1, UBound(vError) - LBound(vError) + 1) = vError Next C End Sub Function HasFC(Text As String) '// 종성을 가지고 있는지,,, '// 결과: 한글이 아니면 "", 받침있으면 True, 없으면 False Dim Uno As Long On Error Resume Next HasFC = "": Uno = AscW(Left(Text, 1)) - &HAC00 If Uno < 0 Or Uno > 11171 Then Else HasFC = (AscW(Left(Text, 1)) - &HAC00) Mod 28 > 0 End Function만들어 주신 매크로, 정독하고 이해해보고 익히겠습니다.
감사합니다!
주신 매크로를 기반으로 은/는 이/가 도 적용하기 위해 코드를 수정하고
'이'가 아래처럼 작동할 때는 예외로 적용하게 하려 합니다.
그런데 '말하는 이'의 '이/가' 검사를 하면 적용이 안 되네요. 계속 생각해 봤습니다만
제 힘으로는 해결이 되지 않아 다시 여쭙게 되었습니다. 시간이 괜찮으시다면 검토해 주시면 감사드리겠습니다.