Vba MS-ACCESS如何通过子例程或函数更改文本框字体颜色

Vba MS-ACCESS如何通过子例程或函数更改文本框字体颜色,vba,function,ms-access,textbox,subroutine,Vba,Function,Ms Access,Textbox,Subroutine,我在表单中有一些文本框,默认情况下我用这些属性设置了一个文本框 txtSearchBox.Value = "Wait.." txtSearchBox.ForeColor = 2 txtSearchBox.FontItalic = True 我想将onClick事件添加到此txtSearchBox,以便通过子例程或函数更改其属性,因为我想在其他文本框上使用此sub/fun 所以我声明了一个全局变量 Dim CurrentCtrl As Object 试着去做这件事 Private Sub tx

我在表单中有一些文本框,默认情况下我用这些属性设置了一个文本框

txtSearchBox.Value = "Wait.."
txtSearchBox.ForeColor = 2
txtSearchBox.FontItalic = True
我想将onClick事件添加到此txtSearchBox,以便通过子例程或函数更改其属性,因为我想在其他文本框上使用此sub/fun

所以我声明了一个全局变量

Dim CurrentCtrl As Object
试着去做这件事

Private Sub txtSearchBox_Click()
CurrentCtrl = txtSearchBox.Name
txtWait4Input (CurrentCtrl)
End Sub

Private Sub txtWait4Input(CurrentCtrl As Object)
CurrentCtrl.ForeColor = 0
CurrentCtrl.FontItalic = False
CurrentCtrl.Value = Null
End Sub
但这不起作用

  • 使用
    Set

  • 从子调用中删除paren

  • 使用控件集合

  • Dim语句不创建需要全局或公共的全局变量,Dim声明的变量仅对声明它的模块可用

  • 不应在两个位置声明变量CurrentCtrl

  • 因此,如果所有代码都隐藏在表单后面:

    Dim CurrentCtrl As Object
    _________________________________________
    Private Sub txtSearchBox_Click()
    Set CurrentCtrl = Me.Controls("txtSearchBox")
    txtWait4Input
    End Sub
    _________________________________________
    Private Sub txtWait4Input()
    CurrentCtrl.ForeColor = 0
    CurrentCtrl.FontItalic = False
    CurrentCtrl.Value = Null
    End Sub
    
    可以删除标题中的变量并设置行:

    Private Sub txtSearchBox_Click()
    txtWait4Input Me.Controls("txtSearchBox")
    End Sub
    _________________________________________
    Private Sub txtWait4Input(CurrentCtrl As Object)
    CurrentCtrl.ForeColor = 0
    CurrentCtrl.FontItalic = False
    CurrentCtrl.Value = Null
    End Sub
    
    “不工作”意味着什么-错误信息,错误结果,什么都没发生?以编程方式更改控件属性会影响控件的所有实例。如果需要按记录将其动态化,请在CurrentCtrl.Name=txtSearchBox.Name行上使用条件格式。未设置对象变量(错误91)