我有一个如下所示的Access表:
+------------+--------+--------+--------+-------+
| PartNumber | Thing1 | Thing2 | Thing3 | Item1 |
+------------+--------+--------+--------+-------+
| 123 | ABC | XYZ | ASD | poi |
| 456 | QWE | SDF | ERT | lkj |
| 789 | JKL | IOP | YUI | mnb |
+------------+--------+--------+--------+-------+
我希望创建一个带有ComboBox和TextBox的MS Access表单,如下所示:
基本上,我希望能够通过选择ComboBox中的字段然后在TextBox中设置字段的值来添加/编辑表格中的某些字段。但是,我只想编辑表格中的Thing#字段。那么我将如何创建一个宏或VBA系统来实现这一目标呢?
答案 0 :(得分:0)
这是一个让你入门的例子,尽管你可能想要添加一些额外的东西,比如验证检查和诸如此类的东西。
首先,您的表单应绑定到您提供给我们的表,以便更新该表中的数据。我在我的例子中调用了你的表“tblThings”,所以不管你怎么称它都应该在表单的记录源属性中:
接下来,将组合框和文本字段创建为未绑定控件(即只需从“设计”功能区中的“控件”添加它们)。
对于组合框,您可以使用向导键入所需的值(选项),也可以跳过向导并手动编辑组合框的属性,如下所示:
接下来,我会添加一个按钮,允许您将编辑内容提交到当前记录,也可以使用几个导航按钮转到下一个/上一个记录。
这是我的模特:
当您想要将文本框中放置的内容提交到您在组合框中选择的Thing#字段时,勾选按钮将被按下。
“tick”按钮的点击事件中包含以下VBA:
Private Sub cmdApply_Click()
Forms(frmThings).Controls(Me.cboFieldSelect) = Me.txtFieldValue
End Sub
这是“下一个”按钮的VBA,可以将您移动到下一条记录(再次点击事件):
Private Sub cmdNext_Click()
DoCmd.GoToRecord , , acNext
End Sub
和“上一个”按钮的VBA将您移动到下一条记录(再次在点击事件中):
Private Sub cmdPrev_Click()
DoCmd.GoToRecord , , acPrevious
End Sub
因此,当您使用表单时,如果您:
在上面的示例中,我已经显示了表单的绑定字段,因此您可以看到效果有效(尽管您不一定需要在表单上显示这些效果)。
Here's a link to my example Access file
更新 - 使用组合框更改事件的替代方法
根据下面的评论,这里有一种方法可以获取组合框的更改事件,将数据放入您的Thing字段(无需按钮传递数据)。
切换文本框和组合框的顺序,首先在文本框中输入数据:
然后当您从组合框中选择Thing字段时,文本框中的数据将被放入所选的相应Thing字段中:
为了实现这个目的,你基本上把我们用于勾选按钮的VBA放在组合框的更改事件之前(之后我也清空了文本框,让用户明白新值是他们需要输入的下一个字段需要):
Private Sub cboGblFieldsSelect_Change()
Forms(frmThings).Controls(Me.cboGblFieldsSelect) = Me.txtGblFieldsValue
Me.txtGblFieldsValue = ""
End Sub
Here's the updated file for you to have a look at
还有一些验证,在文本框为空时锁定组合框..如果你想允许使用nulls / zero-length字符串,你可能想删除/忽略项目中的那些。 / p>