2017-09-11 2 views
0

Ich versuche, dieses Skript So zu debuggen ich habe, kann man Fehler, die ich nicht in der Vergangenheit erhalten:Wie referenziere ich Text unter TextRange?

Dim pptText As String 
pptText = Shape.TextFrame.TextRange 

Ich erhalte eine Fehlermeldung Objekt benötigt sagen, und wenn ich dies tun:

Dim pptText 
pptText = Shape.TextFrame.TextRange 

es wird ohne Fehler ausgeführt werden, aber PptText wird dann nicht auf den gewünschten Text festgelegt. Ich versuche, diesen Teil der Form abzuzugleichen (blau markiert) Ich will es „hee“ zurückzukehren: https://imgur.com/a/wxACT

I

Dim pptText 
pptText = Shape.TextFrame.TextRange.Text 

versucht habe, aber das ist wahrscheinlich ein lächerlicher Versuch, und tue nicht arbeiten. Ich habe keine Ahnung, was ich an diesem Punkt tun kann. Irgendwelche Hilfe geschätzt!

Antwort

0

Sie haben nicht Ihren gesamten VBA-Code angezeigt, aber ich vermute, dass Ihr Verweis auf Shape in Ihrem Code den Fehler verursacht. 'Shape' kann nicht der Name Ihrer Variablen sein, die auf den Objekttyp Shape verweist, da es sich um ein reserviertes Wort in VBA handelt.

Ich habe eine Folie eingerichtet, die einen einzelnen Textrahmen mit "hee" hat und konnte den folgenden Code ohne Fehler und das erwartete Ergebnis ausführen.

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

hatte ich shpe Als Form aber ich bemerkt, dass Sie didnt auch pptText Set = zu nichts. Und das machte mir klar, dass ich auch nichts einstellen musste und es funktionierte! Können Sie mir erklären, btw, was der Unterschied zwischen ‚Set pptSlide = pptPres.Slides _ (PowerPointApp.ActiveWindow.Selection.SlideRange.SlideIndex) und Set pptSlide = Application.ActiveWindow.View.Slide sind? – Pinlop

+0

Hier ist mein ganzer Code: https://pastebin.com/xh0uRPGd Ich bin immer noch nicht sehr sicher, wann ich Set verwenden soll und wann nicht. Meine "iq_Array" -Variable hat jetzt keinen Typ, weil sie mir das gleiche Problem wie "pptText" gibt – Pinlop

+1

Sie verwenden SET, wenn Sie ein Objekt einer Variablen zuweisen (zB EINSTELLEN einer als Shape auf eine bestimmte Form abgeblendeten Variablen) und = wann Zuweisen eines Werts zu einer Variablen (z. B. Ihr pptText, definiert als String-Variable). Übrigens hätte Ihr pptText = Shape.TextFrame.TextRange.Text funktioniert, wenn Sie zuerst Shape = [irgendeine Form auf der Folie] gesetzt hätten, obwohl es, wie PeterT erwähnt, keine gute Idee ist, reservierte Wörter zu verwenden (zum Beispiel Shape)) als Variablennamen. –

Verwandte Themen