为什么我的 VBA 代码不起作用
why is my VBA code not working
我有一个包含数字的列表框和一个按钮,我希望列表框以另一种形式显示您 select 编辑的数字
示例我想购买从 1 到 10 的钥匙,如果我 select3 我希望下一个表格显示您购买了 3 把钥匙
Private Sub List28_Click()
If Not IsNull([num of keys]) Then
Forms! [navigation forms].Form.[navigationsubform].Form.User =
Me.Num_of_keys_Label
Forms! [navigation forms].Form.[navigationsubform].Form.User = Me.List28
End If
DoCmd.Close
EndSub
显示购买结果
我得到一个编译错误:无效使用 属性
这不是 VBS(Microsoft Visual Basic 脚本版)。它是 VBA (Visual Basic for Applications)。 VBA 是面向行的。如果要拆分很长的行,则必须在行尾使用 space (_
) 开头的续行符。
Forms! [navigation forms].Form.[navigationsubform].Form.User = _
Me.Num_of_keys_Label
EndSub
中应该有一个space
End Sub
此外,缩进代码使其更具可读性
Private Sub List28_Click()
If Not IsNull([num of keys]) Then
Forms![navigation forms].Form.[navigationsubform].Form.User = _
Me.Num_of_keys_Label
Forms![navigation forms].Form.[navigationsubform].Form.User = Me.List28
End If
DoCmd.Close
End Sub
您应该使用 AfterUpdate
事件。不是 Click
事件。 AfterUpdate
在选择新项目后发生。
什么是[num of keys]
?列表框的名称似乎是 List28
.
List28
是个坏名字。在创建事件方法之前重命名您的控件。这使代码更具可读性。例如。如果您将列表框重命名为 lstNumbers
,那么您将获得一个事件方法的发音名称,如 lstNumbers_AfterUpdate
。像 btnCancel_Click
这样的名字比 Button17_Click
.
更容易理解
我不明白代码的逻辑。您将另一种形式的 User
控件(标签或文本框?)设置为 Me.Num_of_keys_Label
而不是您测试过的 [num of keys]
不为空。紧接着,您将此值替换为 Me.List28
,根据您的评论 ("the click was for the button"),这是一个按钮。这一切都没有意义。
首先为控件和窗体的名称添加前缀。例如
txt
用于文本框,例如txtUser
btn
用于按钮,例如 btnBuy
lst
对于列表框,例如 lstNumOfKeys
lbl
用于标签,例如 lblResult
cbo
用于组合框,例如 cboCountry
frm
对于表单,例如 frmNavigation
fsub
用于子表单控件,例如 fsubNavigation
我有一个包含数字的列表框和一个按钮,我希望列表框以另一种形式显示您 select 编辑的数字
示例我想购买从 1 到 10 的钥匙,如果我 select3 我希望下一个表格显示您购买了 3 把钥匙
Private Sub List28_Click()
If Not IsNull([num of keys]) Then
Forms! [navigation forms].Form.[navigationsubform].Form.User =
Me.Num_of_keys_Label
Forms! [navigation forms].Form.[navigationsubform].Form.User = Me.List28
End If
DoCmd.Close
EndSub
显示购买结果
我得到一个编译错误:无效使用 属性
这不是 VBS(Microsoft Visual Basic 脚本版)。它是 VBA (Visual Basic for Applications)。 VBA 是面向行的。如果要拆分很长的行,则必须在行尾使用 space (_
) 开头的续行符。
Forms! [navigation forms].Form.[navigationsubform].Form.User = _
Me.Num_of_keys_Label
EndSub
End Sub
此外,缩进代码使其更具可读性
Private Sub List28_Click()
If Not IsNull([num of keys]) Then
Forms![navigation forms].Form.[navigationsubform].Form.User = _
Me.Num_of_keys_Label
Forms![navigation forms].Form.[navigationsubform].Form.User = Me.List28
End If
DoCmd.Close
End Sub
您应该使用 AfterUpdate
事件。不是 Click
事件。 AfterUpdate
在选择新项目后发生。
什么是[num of keys]
?列表框的名称似乎是 List28
.
List28
是个坏名字。在创建事件方法之前重命名您的控件。这使代码更具可读性。例如。如果您将列表框重命名为 lstNumbers
,那么您将获得一个事件方法的发音名称,如 lstNumbers_AfterUpdate
。像 btnCancel_Click
这样的名字比 Button17_Click
.
我不明白代码的逻辑。您将另一种形式的 User
控件(标签或文本框?)设置为 Me.Num_of_keys_Label
而不是您测试过的 [num of keys]
不为空。紧接着,您将此值替换为 Me.List28
,根据您的评论 ("the click was for the button"),这是一个按钮。这一切都没有意义。
首先为控件和窗体的名称添加前缀。例如
txt
用于文本框,例如txtUser
btn
用于按钮,例如 btnBuy
lst
对于列表框,例如 lstNumOfKeys
lbl
用于标签,例如 lblResult
cbo
用于组合框,例如 cboCountry
frm
对于表单,例如 frmNavigation
fsub
用于子表单控件,例如 fsubNavigation