2011-03-10 4 views
1

안녕하세요 시나리오 : 나는 빨간색과 녹색의 교대 색상으로 단어를 강조해야하며 이미 작동하는 다음 코드가 있습니다. 문제는 Mod 또는 Modulo 연산자를 사용하지 않고 어떻게이 작업을 수행 할 수 있습니까? 또한 범위를 사용해야합니다. 모든 제안을 환영합니다! 고마워요!Word VBA 대체 단어 VBA를 사용하여 강조 표시

모듈은 함수를 호출 : 대체 강조 대한

Sub Test() 
'If to call the function 
If (altHighlight(ActiveDocument.Range)) = True Then MsgBox "Alternate Highlighting Done!" 

End Sub 

기능 : 컴퓨터가 빠르게 분열을 할 수

Function altHighlight(R As Range) As Boolean 
    Dim eachWord As Range 
    Dim count As Integer 

    For Each eachWord In R.Words 
     If count Mod 2 = 0 Then 
      eachWord.HighlightColorIndex = wdRed 
     Else 
      eachWord.HighlightColorIndex = wdGreen 
     End If 
     count = count + 1 
    Next 
    altHighlight = True 
End Function 
+0

왜 'Mod'를 제거하려고합니까? 이 숙제가 있니? – Gabe

답변

0

하기 전에 다른 일에 두 가지 일반적인 방법이 있었다.

정수의 최하위 비트는 증가 될 때 0과 1 사이에서 번갈아 나타납니다. 당신은 그 비트를 골라하기 위해 비트 AND 연산자를 사용할 수 있습니다 : 당신이 실제로 범위의 항목을 계산하지 않는 때문에

Function altHighlight(R As Range) As Boolean 
    Dim eachWord As Range 
    Dim count As Integer 

    For Each eachWord In R.Words 
     If count And 1 = 0 Then 
      eachWord.HighlightColorIndex = wdRed 
     Else 
      eachWord.HighlightColorIndex = wdGreen 
     End If 
     count = count + 1 
    Next 
    altHighlight = True 
End Function 

, 당신은 단지 count을 할 수 자체가 전환 0 ~ 1 :

Function altHighlight(R As Range) As Boolean 
    Dim eachWord As Range 
    Dim count As Integer 

    For Each eachWord In R.Words 
     If count = 0 Then 
      eachWord.HighlightColorIndex = wdRed 
     Else 
      eachWord.HighlightColorIndex = wdGreen 
     End If 
     count = 1 - count 
    Next 
    altHighlight = True 
End Function 
+0

안녕하세요. 빠른 답변 감사합니다. 나는 훨씬 내 코드보다 코드를 선호한다! 대체품으로 내 혼란을 해결해 주셔서 감사합니다. 이것은 곧 도움이 될 것입니다. :) – decrementor

+0

오, 마지막 질문 : For each EachWord in R.Words를 사용하여 위의 색상보다 다른 색상을 사용하는 더 좋은 방법이 있습니까? – decrementor

관련 문제