为什么我的 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