2010-05-31 128 views
1

我在VBA中用許多文本框製作了一個用戶界面。我讀了一張excel表格,並將其中的所有值放在我用戶界面的所有文本框中。因此,用戶可以修改這些值,然後將其保存在Excel工作表中。如何在VBA中使用循環功能填充許多texbox

因爲我們無法像數組(textBox(1),textbox(2)....)那樣命名文本框,所以使用循環函數很難填充文本框。

我試圖使用標記或tabindex屬性,但我沒有找到繼續進行的好方法....是否有人知道一個簡單的方法來解決這個問題!

謝謝

回答

0

迭代窗體的控件集合。

例如,假設您的用戶形式被稱爲myForm會,然後

myForm.Controls(i) 

讓你的手柄在myForm的任何控制。現在,您可以使用控件屬性來確定您正在查看哪個(標籤,文本框,按鈕等)。我建議你使用標籤如hmmmm ....「TEXTBOX」,以緩解id的過程。

if myForm.Controls(i).Tag="TEXTBOX" then 'it's my textbox ! hurraay!!! 
+0

謝謝,我用myForm.Controls(I)。文本這很好。感謝提示! – user90714 2010-05-31 18:17:32

+0

謹慎的話,VB在運行時解析對象的屬性,而Text是一個不存在的屬性名稱,例如對於標籤(和其他控件)......所以,你必須在一個On之後檢查你的err.number錯誤轉到下一步,或通過檢查所有控件(標記,名稱等)的屬性來完全避免它。 很高興我能幫到你。 – jpinto3912 2010-05-31 18:52:37

1

是的,你可以。

名稱的文本框Textbox1的,TextBox2中等等,然後用

Form.Controls("Textbox" & ID) 
1

訪問他們,你可以使用此代碼來填充多textboxs

Dim rs As Object 
    Dim i As Integer 
    Dim ctlr As Control 
    Set rs = Me.Recordset.Clone 
    For Each ctlr In Me.Controls 
    If TypeOf ctlr Is TextBox Then 
     For i = 0 To ctlr.Controls.Count 
     On Error Resume Next 
     ctlr.Value = rs!SomeField 
     rs.MoveNext 
     Next i 
    End If 

Next