希望不是太难的问题,但我无法弄明白这一点,并且无法找到任何搜索论坛的内容。
我想将我的切换框的输出从1,2,3,4,5转换为每个按钮显示的文本。
无法在切换框属性本身找到任何设置,所以决定我必须编写一个宏/ vba来从表中执行它,但因为它对我来说很新,我在语法上挣扎。
我主要尝试在内置数据宏上执行此操作,但也通过查询和vba尝试了它仍然无法弄明白。
[暂无任何声誉,所以未被允许发布我的宏观照片]
请帮忙!使用vba,数据宏或查询的任何解决方案都很棒
修改
要具体而不是消息框我想根据选项组选择更新我的表“主要设备”中的field1这是我的最新尝试,但仍不确定如何引用选项组。我是否需要将grp设置为等于选项组,如果是,如何?它是不是形式!myform!optiongroup?
Option Compare Database
Function MyFunc(grp As OptionGroup)
Dim rcrdset As Recordset
set grp =
Set rcrdset = Application.CurrentDb.OpenRecordset("Major Equipment", dbOpenDynaset)
Select Case grp.Value
Case 1
With rcrdset
.AddNew
![Field1] = "Not Reviewed"
Case 2
.AddNew
![Field1] = "Reviewed"
Case Else
MsgBox "Error"
End Select
End Function
也刚刚实现,因为这些切换按钮将由用户更新,所以我可能需要更新而不是添加新的?
答案 0 :(得分:1)
您的按钮是选项组的一部分。这是你必须参考的。以下是snippet from my net search。
来自您选项组的AfterUpdate()
事件:
Call MyFunc(Me.MyGroup)
...将使用Select Case
进行评估:
Function MyFunc(grp As OptionGroup)
Select case grp.Value
Case 1
MsgBox "Option value is 1."
Case 2
MsgBox "Option value is 2."
Case Else
MsgBox "Huh?"
End Select
End Function
如果你对VBA全新,那么这里有六个要学习的东西,但它们会很好地为你服务。 VBA提供的启动比宏看起来不那么友好,但我可以告诉你未来有更多的冒险,我建议你跳过宏。对于大多数需求,VBA将更好地为您服务;当你需要建议时,它更容易麻烦拍摄或提供细节。
要将此转换为有用的函数,您将填充字符串变量而不是引发消息框。然后,您可以使用字符串变量执行诸如运行更新查询之类的操作。您最新的编辑建议您选择以下内容:
strSQL = "UPDATE [Major Equipment] " _
& "SET Field1='" & strUserSelection & "' " _
& "WHERE MyID=" & lngThisRecord
DoCmd.RunSQL strSQL
您的上一次编辑建议使用DAO记录集。我觉得你可能对谦卑的DoCmd
很好。少学习。你可以在良好的访问中找出查询的原型;然后切换到SQL View并将查询粘贴到您的VBA模块中。如上所示插入变量,注意引号。如果它不起作用,请使用Debug.Print
获取strSQL
的值并将其恢复到良好的“访问权限”,您可以在其中找到它的形状;用你的发现来改善VBA。