我正在尝试创建一个可以在标头中找到特定字符串的宏,然后格式化该列中的单元格。例如,我有一个名为“购买日期”,“上限日期”和“过期日期”的标题。我希望能够找到使用的“Date”的第一个实例,将它们格式化为文本,然后找到下一个出现和格式等。
我创建了一个只找到第一个实例,然后再找不到的实例。任何的想法?我查找了“查找”和“之后”,但无法让它们正常运行。
感谢您的帮助。
答案 0 :(得分:0)
我也在努力超越第一个发现。在Do While下面的代码的最后一部分。也许你可以用它来做点什么。
Sub HyperLinking()
Call HyperLink("Text TO Hyperlink", "C:\Document.docx")
End Sub
Private Function HyperLink(LinkName As String, LinkAddress As String)
Dim WDApp As Object, wd As Object, rn As Long
On Error Resume Next
Set WDApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set WDApp = CreateObject("Word.Application")
End If
On Error Goto 0
Set wd = WDApp.Documents.Open(LinkAddress)
WDApp.Visible = True
Set objWdRange = wd.Content
objWdRange.Find.ClearFormatting
With objWdRange.Find
.Text = LinkName
.Forward = True
.Wrap = wdFindContinue
End With
Do While objWdRange.Find.Execute = True
objWdRange.Hyperlinks.Add Anchor:=objWdRange, Address:=LinkAddress, SubAddress:="", ScreenTip:="Linked Document", TextToDisplay:=LinkName
objWdRange.Find.Execute
Loop
wd.Save
wd.Close
Set wd = Nothing
Set WDApp = Nothing
End Function
有一个问题是,有时候,我认为由于格式化,找不到所有单词。也许有人可以帮助解决为什么会这样?
您可以根据自己的要求调整此代码。
答案 1 :(得分:0)
它不是特别优雅,但这很可能会为你做到。只需编辑一些硬编码值,如sheetname,并确保您没有超过99列或999行。
Public Sub FormatRowsInDateColumns()
Dim header As String
Worksheets("Sheet1").Activate
'loop through columns
For col = 1 To 99
'check if header cell contains word date
header = Cells(1, col).Value
If InStr(1, header, "date", vbTextCompare) <> 0 Then
'convert cell values to string
For Row = 1 To 999
'Formats value and perserves as text with an apostrophe
Cells(Row, col).Value = "'" & Format(Cells(Row, col).Value, "yyyy/mm/dd")
Next Row
'set column format as text
Columns(col).NumberFormat = "@"
End If
Next col
End Sub