遍历控件时设置控件属性

时间:2019-06-25 15:07:53

标签: vba ms-access userform

下面的VBA代码可用于遍历表单上的所有控件,但是如何使用控件名称c.name设置控件的任何属性?

 Dim c As Control
 For Each c In Me.Controls
     If TypeName(c) = "TextBox" Then
         MsgBox "Control Name= " & c.name & " Control Value = " & c.Value

        'I'm looking for this Part:  c.name  .BackColor = 255

     End If
 Next

4 个答案:

答案 0 :(得分:3)

最好先定义要更改的控件,然后将其包含在For循环中。

MessageGetRequestObj.Service.HttpClient.Timeout = new TimeSpan(0, 5, 0);

答案 1 :(得分:0)

嗯,只需设置属性?

 Dim c As Control
 For Each c In Me.Controls
     If TypeName(c) = "TextBox" Then
         c.BackColor = 255
     End If
 Next

由于您使用的是常规Control而不是特定的TextBox界面,因此Intellisense无法正常工作,但是它将运行正常。

答案 2 :(得分:0)

要设置BackColor中的Textbox,您可以直接访问它:TextBox1.BackColor = 255

您尝试此操作的方法是通过Name的{​​{1}}属性,该属性仅返回一个字符串。

基本上您在做什么是TextBox,这会导致错误:

  

编译错误:限定词无效。

所以正确的方法如下:

TextBox1.Name.BackColor = 255

如果要使用智能感知,则可以设置对临时变量的引用。

Dim c As Control
For Each c In Me.Controls
    If TypeName(c) = "TextBox" Then
        c.BackColor = 255
    End If
Next

这里是Microsofts Documentation在“文本框对象(访问)”上。您可以将其用作其不同方法和属性的参考。

答案 3 :(得分:-1)

自从我涉足VBA以来已经太久了。 我的问题的(明显)正确答案是: c.BackColor = 255

相关问题