2011-08-22 57 views
1

我有一個用戶窗體,我創建了包含多個文本框。每個這些字段都命名爲name1,name2,name3等。單詞vba宏 - 動態引用表單元素

此用戶表單是從用於處理數據的Word宏中調用的。根據宏運行的文件中的數據,我希望數組中的內容顯示在每個文本框中。

我想要做的就是動態引用表單TextBoxes,以便我可以從循環內填充它們,而不必爲每個單獨的值/ TextBox單獨執行if語句。

因此,例如,而不必做這樣的事情:

For p = 1 To count 
    if p=1 then 
     dForm.name1.Text=myVar(p) 
    end if 
    if p=2 then 
     dForm.name2.Text=myVar(p) 
    end if 
    . 
    . 
    . 
    etc. 
Next p 

我希望能夠到一些更簡單和有效的,如:

For p = 1 To count 
    tempString = "name" & p 
    dForm.tempString.Text = myVar(p) 
Next p 

Unforunately雖然,我不能弄清楚如何做到這一點。

這可能嗎?我一直希望能夠在Actionscript中做類似的工作,但它沒有(在Actionscript中,我只是做dForm [「name」+ p] .Text = myVar [p])。

任何意見/建議?我所嘗試過的任何東西都沒有工作,而且我一直無法在網上找到關於此的任何信息。我相信必須有一些工作來避免必須執行大量的if語句('name'TextBoxes'只是作爲我的表單一部分的許多重複TextBox中的一個,因此必須執行if語句對於所有的人都將永遠走)......

回答

1
UserForm1.Controls("name" & p).Value = myVar(p) 

或...

Private Sub FillTextBoxes() 
    Dim ctl As Control 

    For Each ctl In UserForm1.Controls 
     If TypeName(ctl) = "TextBox" Then 
      If ctl.Name Like "name*" Then 
       ctl.Value = myVar(p) 
      End If 
     End If 
    Next 
End Sub 
+0

這正是我需要的(我用了你的第一個建議)!非常感謝! – Mark

+0

隨時!請點擊我的答案旁邊的「0」下方的「接受」複選框,以便我可以獲得積分! – transistor1

+0

完成 - 謝謝你讓我知道,我是新來的,所以不知道它是如何工作的。 – Mark