2017-06-15 46 views
0

我正在嘗試編寫一個vba循環,它將檢測幻燈片上所有ActiveX文本框的值。不過,我在編寫文本框引用中的「變量」代碼時遇到了麻煩。例如TextBox(i)需要在循環中被引用。其中我是一個整數,我將該值設置爲。VBA Powerpoint參考變量的文本框

Dim i as Integer 

For i = 1 to 4 

If IsNull(Slide1.Shapes.("TextBox" & i).Value) = True 
    Then (Slide1.Shapes.("TextBox" & i).Value) = 0 
       Else: ... 

Next i 

但是這個腳本不工作,我一直無法找到如何正確地編寫腳本的這個可變部分的來源。有一些使用Me.Controls的討論,但我沒有創建表單。任何人都願意分享我的腳本中的錯誤嗎?

+0

你的意思是* *具體文本框的形狀或你的意思是有它的文本任何形狀(矩形,圓形等等都可以包括文本)? –

+0

我特別指的是幻燈片上的所有文本框。 「形狀」一詞來自網絡上的其他腳本。也許「形狀」不需要?我通過Powerpoint中的ActiveX控件創建了TextBoxes。 – Greg

回答

0

@Steve Rindsberg你有正確的代碼。謝謝。這是獲取該值的最終腳本,並將該值設置爲空白。

For i = 1 To 4 

      'set oSh to TextBox1, TextBox2, TextBox3... etc. 
      Set oSh = ActivePresentation.Slides(1).Shapes("TextBox" & CStr(i)) 

       'set myVar to value of this TextBox1, TextBox2... 
       myVar = oSh.OLEFormat.Object.Value 

        If myVar = "" Then _ 
         ActivePresentation.Slides(1).Shapes("Text" & CStr(i)).OLEFormat.Object.Value = 0 _ 
        Else: 'do nothing 

        'clear value of myVar 
        myVar = "" 

    'start on next integer of i     
    Next i 
1

這會將i的值放入TextBox i中。我想,應該讓你開始。

Sub Example() 

    Dim oSh As Shape 
    Dim i As Integer 

    On Error Resume Next 

    For i = 1 To 4 

     Set oSh = ActivePresentation.Slides(1).Shapes("TextBox" & CStr(i)) 
     If Err.Number = 0 Then ' shape exists 
      oSh.OLEFormat.Object.Text = CStr(i) 
     End If 

    Next i 

End Sub