我有一个组合框,有两个选项作为输出,一个是"已完成"另一个是" 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无法找到字段'已完成'在你的表达中提到。'
我尝试了很多不同的写作方式,但我不知所措。非常感谢任何帮助。
答案 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答案