簡體   English   中英

VBA 中的幻燈片計數變量 - Powerpoint

[英]Slide count variable in VBA - Powerpoint

@james 不久前回復了一個類似的問題,即正確的解決方法是:

Sub CreatePres()
    Dim ppApp As PowerPoint.Application
    Dim ppPres As PowerPoint.Presentation
    Dim ppSlide As PowerPoint.Slide
    Dim ppTextbox As PowerPoint.Shape

    Set ppApp = New PowerPoint.Application
    ppApp.Visible = True
    ppApp.Activate

    Set ppPres = ppApp.Presentations.Add
    slidesCount = ppPres.Slides.Count
    Set ppSlide = ppPres.Slides.Add(slidesCount + 1, ppLayoutTitle)
    ppSlide.Shapes(1).TextFrame.TextRange.Text = "Hello world"
    ppSlide.Shapes(2).TextFrame.TextRange.Text = Date
    slidesCount = ActiveWindow.Selection.SlideRange.SlideIndex
    Call slide2(slidesCount)
End Sub

Sub slide2(i As Integer)
    Set ppSlide = ppPres.Slides.Add(i + 1, ppLayoutTitle)
    ppSlide.Select
    ppSlide.Shapes(1).TextFrame.TextRange.Text = "Hello world"
    ppSlide.Shapes(2).TextFrame.TextRange.Text = Date
End Sub

然而,我在'Call Slide2(slidecount)'上收到“通過 ref mismatch Argumnenr 錯誤——這是第一個 sub 的 las 行。

我在 Windows 10 Pro 上使用 Office 365。

提前致謝

您沒有 DIM 您的 slidesCount 變量,因此 VBA 在您為其分配值時會創建一個變體。 您的 Sub slide2 需要 integer,因此會引發錯誤。

為了省去這樣的麻煩,總是把 Option Explicit 放在每個模塊的頂部。 這將防止未聲明的變量導致這樣的問題。

Go 轉工具 | 選項並在需要變量聲明旁邊打勾,讓 VBA 自動為您插入選項顯式。

使用正確的變量類型也是一個好主意。 PPT object model 中的 Any.Count 值將是 Long,而不是 integer。 VBA 通常會在需要時在兩者之間進行轉換。 通常是對的。 有時不是。 然后這一切都擊中了風扇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM