Combobox函数将更改类似命名文本框的属性

时间:2015-05-20 17:22:22

标签: vba access-vba

我有一个组合框,有两个选项作为输出,一个是"已完成"另一个是" N / A"。当选择其中一个选项时,我想要一个文本框来输出一条消息,并更改文本框中的字体。我已经命名了组合框SC1和文本框ID1,因为我将使用该函数来更改整个表单中的多个文本框。

我目前在Combobox(SC1)的Afterupdate属性中使用了一个函数,并以这种方式引用函数:= chkclick([SC1])

这应该运行以下函数,sName引用SC1(Combobox) -

 Private Function chkClick(sName As String)
      Dim IDnumber As String
      Me.Controls(sName).SetFocus
        If Me.Controls(sName).Value = "Completed" Then
            IDnumber = Split(sName, "C") 
            Form.Controls("ID" & IDnumber).Value = ("Completed by " & (Environ$("Username")))
            Form.Controls("ID" & IDnumber).ForeColor = 10
            Form.Controls("ID" & IDnumber).Controls(0).Visible = True

        ElseIf Me.Controls(sName).Value = "Not Applicable" Then
            Form.Controls("ID" & IDnumber).Value = ("Not completed, please leave comments when saving")
            Form.Controls("ID" & IDnumber).ForeColor = 10
            Form.Controls("ID" & IDnumber).Controls(0).Visible = True
        End If
    End Function

但是我收到以下错误消息 - "您在事件属性设置中输入的更新后表达式产生了以下错误:Microsoft Access无法找到字段'已完成'在你的表达中提到。'

我尝试了很多不同的写作方式,但我不知所措。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我认为你的问题在于:

IDnumber = Split(sName, "C")

例如,当我在Access中运行此代码时:

Dim s As String
s = Split("abc", "b")   ' can't assign array to plain string

我得到Error 13: Type Mismatch。这是因为您无法将数组分配给简单的字符串变量。

修复?将字符串标注为数组:

Dim s() As String
s = Split("abc", "b")
Debug.Print s(0)        ' works

答案 1 :(得分:0)

我解决了这个问题。当我在属性窗口中将函数称为= chkclick([SC1])时,它给出了输出"已完成"而不是名字。我在属性窗口中将函数更改为= chkclick(" SC1")然后引用控件名称,其余部分我可以使用Kismerts答案