While ... Wend 루프가이 매크로에서 작동하지 않는 이유를 이해하기가 어렵습니다. 틀림없이, 웬드는 내 강한 옷이 아니야. 하지만 어쨌든, 내가 성취하려고하는 것은 다음과 같습니다.Word VBA Wend 문이 작동하지 않는 동안
문서의 끝에는 단어 나 구가 하나씩 나열되어 있습니다 (각각 별도의 행에 있음). 문서에서 해당 단어를 각각 검색하고 노란색 강조를 적용하는 매크로를 원합니다. 그래서 여기에 내가 만들고자하는 과정이 있습니다 :
- 매크로를 호출 할 때 나는 첫 단어에 있습니다.
- 첫 번째 문자를 평가하십시오. 빈 줄이면 아무것도하지 않고 매크로를 종료하십시오. 단어 나 구가 있으면 그것을 선택하고 FRText로 저장하십시오.
- 줄을 삭제하고 책갈피를 만들고 F/R을 사용하여 텍스트를 찾아 강조 표시하십시오.
- 린스하고 더 이상 단어가 없을 때까지 반복하십시오.
임시 매크로에서 매크로를 단일 단계 단위로 세분화했으며 While ... Wend 문을 사용하여 더 간단한 "중간 단계"단계에서 작업 할 수있었습니다 (예 : F/R 작업 대신에 빈 줄 대 빈 줄을 테스트하고, 단어 인 경우 텍스트를 굵게 표시하고 비어 있으면 종료합니다.) 모두 잘 작동합니다.
그러나 모든 것을 "실제 매크로"에 넣을 때마다 매번 동일한 문제가 발생합니다. 제대로 컴파일되지만 컴파일 할 때 디버그 오류가 발생합니다. 디버그를 클릭하면 3 ~ 4 개의 단어 (정확하게)로 매크로가 실행되고 디버거는 매크로의 다른 임의의 지점에서 멈추거나 아무런 운이나 이유도없이 무엇이 잘못되었는지에 대한 힌트없이 멈 춥니 다.
또한 목록의 마지막 단어에 매크로를 수행하면 제대로 작동합니다. 그리고 문서의 빈 줄에 커서를 올려 놓으면 제대로 작동합니다 (아무 일도하지 말고 그대로).
내가 곤혹 스럽다. While ... Wend 루프에 대한 예제 및 정보를 검색하여 설명을 찾을 수 있는지 확인했습니다. 나는 또한 나의 책을 수색했다. 그러나 내가 시도한 것은 아무것도 작동하지 않는 것 같습니다. 나는 누군가가 이것을보고 즉시 내가 뭘 잘못하고 있는지를 볼 수있는 기적을기도하고 있습니다!
매크로는 아래에 있으며 테스트를 원하는 사람이 있으면 복사 할 샘플 텍스트도 있습니다. 미리 감사드립니다!
MACRO 테스트를 위해
카렌
Sub FindAndHighlightList()
Dim FRText As String
Dim iCount As Integer
Application.ScreenUpdating = False
'Begin with cursor on first word in "find list."
'Repeat the following action until no more words are found in the list
'iCount is precautionary measure in case macro gets hung in the loop
While Not Selection.Characters(1) = Chr(13) And iCount < 1000
iCount = iCount + 1
'Select the current line of text, minus the paragraph mark; store it as FRText; then delete it
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
FRText = Selection.Text
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
'Create a temporary bookmark
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="TempX"
.DefaultSorting = wdSortByName
.ShowHidden = True
End With
'Find the selected text and replace add yellow highlight
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Options.DefaultHighlightColorIndex = wdYellow
Selection.Find.Replacement.Highlight = True
With Selection.Find
.Text = FRText
.Replacement.Text = FRText
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
'Go to TempX bookmark location
Selection.GoTo What:=wdGoToBookmark, Name:="TempX"
Wend
If Selection.Characters(1) = Chr(13) Then Exit Sub
Application.ScreenUpdating = True
End Sub
샘플 텍스트는 여기에 내가 강조하고 싶은 몇 가지 단어와 문단의 예입니다. 그리고 여기에 더 많은 단어들이 있습니다. 그리고 나는이 매크로를 작동 시키면 좋겠다. 나는 그것을 고치려고 내 마음과 종교를 잃어 가고있다! 다음은 강조하고자하는 단어가 들어있는 단락의 예입니다.
그리고 여기에 몇 가지 단어가 있습니다. 그리고 나는이 매크로를 작동 시키면 좋겠다. 나는 그것을 고치려고 내 마음과 종교를 잃어 가고있다! 다음은 강조하고자하는 단어가 들어있는 단락의 예입니다. 그리고 여기에 더 많은 단어들이 있습니다. 그리고 나는이 매크로를 작동 시키면 좋겠다. 나는 그것을 고치려고 내 마음과 종교를 잃어 가고있다!여기
예를
단락
단어
매크로
"Find"를 사용하여 현재 선택 전체가 찾고자하는 정확한 텍스트 일 때, 문서에서 더 이른 경우라도 다음 항목을 미리 보게됩니다. - https://stackoverflow.com/a/44105332/5757159 – ThunderFrame
안녕하세요 ThunderFrame - 답변 해 주셔서 감사합니다. 나는 네가하는 말을 잘 이해하지 못한다. 예를 들어 필자가 수동으로 텍스트를 선택한 다음 찾기/바꾸기 또는 찾기를 호출하면 해당 텍스트 내에서만 검색하고 문서의 시작 부분이 아니라 아래쪽을 검색합니다. GRRR - 계속 타격하십시오! 어쨌든, 그 이유는 매크로의 시작 부분을 내가했던 것처럼 설정했기 때문입니다. 텍스트 행을 선택하고 변수로 저장 한 다음 삭제는 효과적으로 선택 해제합니다. 그런 다음 F/R을 방해하지 않습니다. 차이가 있습니까? – HappyNanaMO
ThunderFrame, 문제가 될 수 있다고 생각하는 경우 문서 상단으로 이동하여 검색을 시작하는 성명을 추가하는 것이 좋습니다. 나는 그것을 시도 할 것이다. – HappyNanaMO