我在PowerPoint中遇到VBA问题 - 当我尝试编辑超链接的TextToDisplay属性时,它会编辑文本,但会将超链接位置移动到文本框的开头。
在第一遍中,我将文本框的第一个字符更改为链接,然后在第二遍中,该链接被重写。
当幻灯片移动时,我正在使用以下代码更新超链接的页码。
Sub UpdatePageNumbers()
For Each sld In ActivePresentation.Slides
For x = CInt(sld.Hyperlinks.Count) To 1 Step -1
strParts = Split(sld.Hyperlinks(x).SubAddress, ",")
PageNumber = ActivePresentation.Slides.FindBySlideID(CInt(strParts(0))).SlideNumber
sld.Hyperlinks(x).TextToDisplay = "Page " & PageNumber
Next
Next
End Sub
有没有人见过这个/想出解决方案?有搜索,找不到任何东西。
答案 0 :(得分:3)
我可以重复这种奇怪的行为。这对你来说可能更好。我已将其更改为显式DIM所有变量(一般的好习惯),并使用Longs而不是Integers,因为这是PPT内部使用的。接下来,显然更改显示的文本也会更改或删除超链接(有时但不总是?很奇怪!)。这会抛弃你的循环计数器。因此,对于我存储其子地址的每个超链接,对文本进行了任何更改,然后重新应用子地址。
Sub UpdatePageNumbers()
Dim sld As Slide
Dim x As Long
Dim strParts
Dim PageNumber As Long
Dim oHl As Hyperlink
Dim oTxtRange As TextRange
Dim sSubaddress As String
For Each sld In ActivePresentation.Slides
'For x = CLng(sld.Hyperlinks.Count) To 1 Step -1
For Each oHl In sld.Hyperlinks
With oHl
sSubaddress = .SubAddress
strParts = Split(.SubAddress, ",")
PageNumber = ActivePresentation.Slides.FindBySlideID(CLng(strParts(0))).SlideNumber
'oHl.TextToDisplay = "Page " & PageNumber
Set oTxtRange = .Parent.Parent
oTxtRange.Text = "Page " & PageNumber
oTxtRange.ActionSettings(1).Hyperlink.SubAddress = sSubaddress
End With
Next
Next
End Sub