我有一个Word文档,其中包含每周田径运动会的结果报告。有几个结果组合在一起,用于各种事件。
这是一个简短的摘录......
男子18-19铁饼投掷1公斤F36:
女子15-17铁饼投掷1公斤:
Elizabeth Jones,TAIR,36.34米; 2.考特尼·马丁,ODR,32.61米; 3.
Jessie Scurr,ODR,26.24米。
女子15-17锤击3.00公斤:
Elizabeth Jones,TAIR,49.04m; 2.考特尼·马丁,ODR,42.34米; 3.
Melina Palmer,TAIR,29.24米。
男子14& U跳高:
男子18-19跳高:
我写的vba宏是
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.Text = "discus"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.Execute
Selection.Extend
Selection.Copy
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.EndKey Unit:=wdLine
Selection.TypeParagraph
Selection.PasteAndFormat (wdFormatOriginalFormatting)
Selection.Extend
Selection.Extend
Selection.Extend
Selection.Range.Bold = True
Selection.Font.Grow
End With
End Sub
...找到铁饼结果的第一次出现,并在紧接第一个结果之上的新线上创建一个粗体标题。
我想要做的是为每个事件的结果块重复此过程...即为Hammer,跳高等创建标题等。
我可以为每个事件重复此代码(最多可能有30或40个可能的事件,但在任何给定的一周内,只有15个......所以不是每个事件都会在结果报告中显示)但是那里必须是一个循环或类似的循环,可以循环(或许)数组中列出的每个事件。
这将使宏保持紧凑,并且意味着如果事件名称发生更改,则宏所需的唯一修改将在数组中。
有人可以帮助我吗?
答案 0 :(得分:2)
你在找这样的东西吗?
Sub MakeAllHeadlines()
Dim i As Long
Dim eventNames As Variant
eventNames = Array("discus", "Hammer", "High Jump", "etc")
For i = LBound(eventNames) To UBound(eventNames)
MakeEventHeadline eventNames(i)
Next i
End Sub
Sub MakeEventHeadline(ByVal eventName As String)
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.Text = eventName
'...rest of your code as written in your question
End With
End Sub