2016-04-07 12 views
0

Ich habe ein Textfeld in einer GUI eingerichtet, wo der Benutzer Informationen eingeben kann. Diese Zeichenfolge wird dann in einem Textfeld in einer PPT-Folie ausgegeben. Abhängig von der Anzahl der Zeilen, die in der Textbox in der PPT-Folie verwendet werden, muss ich den nächsten Satz von Informationen so viele neue Zeilen unterhalb des Textes aus dem Textfeld eingeben. Hier ist, was ich bisher:Ermitteln der Anzahl der Zeilen in einem Textfeld in VBA

Dies ist der Code, der den Text nimmt der Benutzer in das Textfeld in der GUI und legt sie in das Textfeld in der PPT-Folie eintritt:

Private Sub Location() 

    With ActiveWindow.Selection.SlideRange.Shapes("WarningData").TextFrame2 
    'Make sure there is text in the call to action textbox. If not, display an error message. 
    If C2AText = "" Then 
     MsgBox "Woah there! You need to enter text in the location/call to action box." 
    'Otherwise, if text is inserted, place that text in the WarningData box found on the PPT slide. 
    Else 
     .TextRange = C2AText 
     .TextRange.Paragraphs.Font.Size = 21 
     .TextRange.Paragraphs.Font.Name = "Calibri" 
     .TextRange.Paragraphs.Font.Shadow.Visible = True 
     .TextRange.Paragraphs.Font.Bold = msoTrue 
    End If 
    End With 

End Sub 

Dieser Text bestimmt ob irgendetwas in der HailInfo-Dropdownliste ausgewählt ist oder nicht. Wenn ja, muss ich diesen Text zu platzieren, so viele Zeilen unterhalb der C2AText, die im vorherigen Sub eingefügt wurde:

Private Sub HailInfo() 
Call Dictionary.HailInfo 

ComboBoxList = Array(CStr(HailDropDown)) 

    For Each Ky In ComboBoxList 
    'On Error Resume Next 
    With ActiveWindow.Selection.SlideRange.Shapes("WarningData").TextFrame2 
     'If nothing is selected in HailDropDown, do nothing and exit this sub. 
     If HailDropDown = "" Then 
     Exit Sub 
     'If a hail option is selected, execute the following code. 
     ElseIf HailDropDown <> "" And C2AText.LineCount = 2 Then 
     .TextRange = .TextRange & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & dict2.Item(Ky)(0) 
     ElseIf HailDropDown <> "" And C2AText.LineCount = 3 Then 
     .TextRange = .TextRange & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & dict2.Item(Ky)(0) 
     End If 
    End With 
    Next 

    Set dict2 = Nothing 

End Sub 

Mit dem C2AText.LineCount innerhalb des HailInfo Unter scheint nicht, etwas zu tun. Es wird den Hageltext nirgendwo einfügen, also bin ich mir nicht sicher, was ich falsch mache. Jede Hilfe würde sehr geschätzt werden ... danke !!

Antwort

0

sollten Sie versuchen, die folgenden ...

Private Sub HailInfo() 
Call Dictionary.HailInfo 

ComboBoxList = Array(CStr(HailDropDown)) 

    For Each Ky In ComboBoxList 
    'On Error Resume Next 
    With ActiveWindow.Selection.SlideRange.Shapes("WarningData").TextFrame2 
     'If nothing is selected in HailDropDown, do nothing and exit this sub. 
     If HailDropDown = "" Then 
     Exit Sub 
     'If a hail option is selected, execute the following code. 
     Else 
     .TextRange.Text = .TextRange.Text & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf & dict2.Item(Ky)(0) 
     End If 
    End With 
    Next 

    Set dict2 = Nothing 

End Sub 

Sie nur .TextRange Referenzierung wurden, anstatt .TextRange.Text.

Auch, weil Sie den Text am Ende hinzufügen müssen, benötigen Sie nur eine Else Bedingung, anstatt zwei ElseIf s, die beide dasselbe tun! ; 0)


Mehr Beispielcode ... https://msdn.microsoft.com/en-us/library/office/ff822136.aspx

+0

Danke, aber diese beiden ElseIf Aussagen sollen zwei verschiedene Dinge tun. Sie fügen eine unterschiedliche Anzahl neuer Zeilen (vbCrLF) ein, basierend darauf, wie viele Textzeilen vom Benutzer in C2AText eingegeben werden. – hunter21188

+0

In dem Code, den Sie geliefert haben, machen beide genau das Gleiche! –

+0

Oh! Guter Fang. Es gibt tatsächlich eine unterschiedliche Anzahl von vbCrLFs in jedem. – hunter21188