【问题标题】:How to fill many texbox by using loop function in VBA如何在 VBA 中使用循环函数填充多个 texbox
【发布时间】:2010-05-31 16:07:56
【问题描述】:

我在 VBA 中制作了一个带有许多文本框的用户界面。我阅读了一张 Excel 表格,并将这张表格的所有值都放在了我的用户界面的所有文本框中。所以用户可以修改值,然后将其保存在excel表中。

因为我们不能将文本框命名为数组 (textBox(1), textbox(2)....),所以很难使用循环函数来填充文本框。

我尝试使用 tag 或 tabindex 属性,但我没有找到继续的好方法....有人知道解决这个问题的简单方法吗!!!

谢谢

【问题讨论】:

    标签: vba textbox loops


    【解决方案1】:

    是的,你可以。

    将您的文本框命名为 Textbox1、Textbox2 等,然后使用

    Form.Controls("Textbox" & ID)
    

    【讨论】:

      【解决方案2】:

      您可以使用此代码填充多个文本框

          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
      

      【讨论】:

      • 我可以使用 vba 将文本框的值放在一个范围内吗..
      【解决方案3】:

      迭代表单的控件集合。

      举个例子,假设你的用户表单叫做 myForm,那么

      myForm.Controls(i)
      

      为您提供 myForm 中任何控件的句柄。现在您可以使用控件属性来识别您正在查看的是哪一个(标签、文本框、按钮等)。我建议您使用 Tag,例如,hmmmm....“TEXTBOX”,以简化 id 的过程。

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

      【讨论】:

      • 谢谢,我使用 myForm.Controls(i).Text 并且效果很好。谢谢提示!!!
      • 请注意,VB 在运行时解析对象属性,而 Text 是一个不存在的属性名称,例如标签(和其他控件)...所以,您必须检查您的 err.number 在 On Error GoTo Next 之后,或者通过检查所有控件(标签、名称等)存在的属性来完全避免它。很高兴我能帮上忙。
      猜你喜欢
      • 2021-04-21
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2017-07-15
      相关资源
      最近更新 更多