[英]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.