#1
|
|||
|
|||
Highlighting paragraphs based on find results
Hi everyone. I was hoping someone could help me with a coding challenge. I create test bank questions, and I'm looking for a way to highlight the correct answer option in Word based on what is in the answer field.
For example, in this question, I would want to highlight the paragraph "b. dog" based on the paragraph "Ans: B". Type: MC Shuffle: Yes 1. Which animal makes the best pet? a. lion b. dog c. giraffe d. whale Ans: B Does anyone have a recommendation on how to accomplish this? Thanks! |
#2
|
||||
|
||||
You will need to provide an example document which shows EXACTLY what the document will contain. Specifically, we need to see the styles and whether the numbers and letters are automatic lists or manually typed.
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
The above is an exact replication of what is in the Word documents. All text is manually keyed (no autolists), there are no double spaces or tabs in the file, and there is no paragraph styling.
I thought I could search for "Ans: A" and then insert "<ans>" at the start of the line with the a. answer option. Same for answers B, C, and D. I can get that to work, but I'm not clear on how to set up a Do While (or whatever would be appropriate) for this type of work. Once the "<ans>" tag is applied, I can apply the highlighting. Thanks! |
#4
|
||||
|
||||
Here is one approach. It assumes you have an "Answer" style in your document to apply to the correct answers. You can then have a secondary macro that toggles the "Answer" style as being same/different to the Normal style if you wanted to show or hide the answers.
Code:
Sub MarkAnswers() Dim lngPara As Long, iOffset As Integer, sAnswer As String For lngPara = 1 To ActiveDocument.Paragraphs.Count If Left(ActiveDocument.Paragraphs(lngPara).Range.Text, 5) = "Ans: " Then sAnswer = ActiveDocument.Paragraphs(lngPara).Range.Words(3) iOffset = Asc(sAnswer) - 69 Debug.Print lngPara, sAnswer, iOffset ActiveDocument.Paragraphs(lngPara + iOffset).Range.Style = "Answer" End If Next lngPara End Sub Sub ToggleAnswerShow() Dim aSty As Style With ActiveDocument.Styles("Answer") If .Font.Bold = ActiveDocument.Styles("Normal").Font.Bold Then .Font.Bold = True .Font.ColorIndex = wdGreen Else .Font = ActiveDocument.Styles("Normal").Font End If End With End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Find/Replace Results in CAPS | RKS-P | Word | 12 | 09-30-2019 08:26 AM |
Rolling up monthly results based on weeknum? | chollyred | Excel | 1 | 08-26-2016 08:20 AM |
Highlighting Excel FIND Results | rstrimel | Excel | 7 | 09-10-2014 07:54 AM |
SUMIF results changed based on filters | SteveBump | Excel | 5 | 10-29-2013 07:25 AM |
Copy Row based on yellow highlighting. | imogul | Excel | 2 | 09-28-2011 04:11 AM |