2017-09-11 14 views
0

所以我想調試這個腳本我有,人有一個錯誤,我不能讓過去:如何在TextRange下引用文本?

Dim pptText As String 
pptText = Shape.TextFrame.TextRange 

我收到一個錯誤說對象所需,而當我這樣做:

Dim pptText 
pptText = Shape.TextFrame.TextRange 

它將運行沒有錯誤,但pptText然後不設置爲我想要的文本。我想引用形狀(藍色高亮顯示),我希望它返回「熙」的這一部分:https://imgur.com/a/wxACT

我已經試過

Dim pptText 
pptText = Shape.TextFrame.TextRange.Text 

但是這可能是一個可笑的嘗試,確實不行。我不知道我現在可以做什麼。任何和所有幫助表示讚賞!

回答

0

您尚未顯示您的整個VBA代碼,但我懷疑您在代碼中對Shape的引用導致了該錯誤。 '形狀'不能是引用Shape對象類型的變量的名稱,因爲它是VBA中的保留字。

我設置了一個包含「hee」的單個文本框架的幻燈片,並且能夠在沒有錯誤和預期結果的情況下執行以下代碼。

Option Explicit 

Sub test() 
    Dim sld As Slide 
    Dim sh As Shape 
    Dim tf As TextFrame 
    Dim pptText As String 

    Set sld = Application.ActiveWindow.View.Slide 
    For Each sh In sld.Shapes 
     Debug.Print sh.TextFrame.TextRange.Text 
    Next sh 
End Sub 
+0

我 SHPE爲形狀 但我注意到,你也didnt設置pptText =任何東西。這讓我意識到,我不需要設置任何東西,它的工作! 你能對我順便說一句什麼「設置pptSlide = pptPres.Slides _ (PowerPointApp.ActiveWindow.Selection.SlideRange.SlideIndex) 和Set pptSlide = Application.ActiveWindow.View.Slide之間的差別是解釋一下嗎? – Pinlop

+0

這裏是我的整個代碼:https://pastebin.com/xh0uRPGd我仍然不是很確定什麼時候使用Set,什麼時候不使用。我的「iq_Array」變量現在沒有類型,因爲它給我提供了與「pptText」相同的問題 – Pinlop

+1

將對象分配給變量時使用SET(例如將變量設置爲Shape形狀爲特定形狀)和= when給一個變量賦值(例如,你的pptText,定義爲一個字符串變量)。順便說一句,如果你首先設置Shape = [幻燈片上的某種形狀],那麼你的pptText = Shape.TextFrame.TextRange.Text會起作用,但是正如PeterT所說,使用保留字不是一個好主意(例如Shape )作爲變量名稱。 –

相關問題