2012-01-02 39 views
2

我有一個子程序,將創建一個形狀,但我有兩個問題代碼:VBA超鏈接和形狀創造

  • 我必須指定在其上滑動,這種形狀將被創建。如果我想同時在多張幻燈片上創建相同的形狀,這是一個問題。我如何實現這一目標?我應該用什麼替換activepresentation.slides(x)?
  • 我希望形狀具有指向特定幻燈片的超鏈接。我的代碼有什麼問題來實現它?當我嘗試將動作分配給所創建的形狀時,它給了我一個錯誤。

Sub createshape() 
    Dim oshp As Shape 
    Dim osld As Slide 

    'old code 
    Set osld = ActivePresentation.Slides(1) 
    Set oshp = osld.Shapes.AddShape(msoShapeRectangle, 485, 15, 104, 60) 
    oshp.ActionSettings (ppMouseClick) 
     .Action = ppActionHyperlink 
     .Hyperlink.Address = SlideNumber 
     .Hyperlink.SubAddress = 1 'this should take the hyperlink to slide 1 i hope. 
End Sub 

我想是因爲我會做同樣的事情了很多很多的幻燈片多次自動執行此功能。

+1

一開始,你With' – 2012-01-02 20:54:27

回答

1

這樣的事情會在當前的幻燈片上起作用。我測試了2幻燈片超鏈接esnure的代碼工作(並沒有使用1作爲默認值)

Sub CreateShape() 
    Dim oShp As Shape 
    Dim oSld As Slide 
    Set oSld = ActivePresentation.Slides(ActiveWindow.Selection.SlideRange.SlideIndex) 
    Set oShp = oSld.Shapes.AddShape(msoShapeRectangle, 485, 15, 104, 60) 
    With oShp.ActionSettings(ppMouseClick) 
     .Action = ppActionHyperlink 
     '.Hyperlink.Address = SlideNumber 
     .Hyperlink.SubAddress = 2 
    End With 
End Sub 
+0

美麗缺少'隨着OSHP ....結束。謝謝。我遇到的唯一問題是它說SlideNumber不是一個定義的變量。 – uncertaintea 2012-01-03 04:28:21

+0

@uncertaintea我把它從你之前的代碼中刪除 - 我建議刪除它,因爲這個SubAddress' propery設置了這個文檔的位置,這正是你想要的。 '地址'看起來像設置'現有的文件或網頁' – brettdj 2012-01-03 05:17:40

+0

@brettdj我在這個問題上有一個問題...如果現在我把幻燈片2 subAddress不會改變一個新的幻燈片。我怎樣才能讓它更新添加引用正確的幻燈片?謝謝 – 2013-08-27 16:18:37