2017-12-02 328 views
0

我的VBA代码,我得到了与它的数字和一个按钮列表框,我想在列表框中显示的数量,你以另一种形式选择为什么不工作

例如我想从1买了数字键的10,如果我选择3,我想接下来的形式展现你买了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 

展示如果购买

我得到一个编译错误结果:无效的财产使用

回答

2

这不是VBS(Microsoft Visual Basic Sc​​ripting Edition)。它是VBA(Visual Basic for Applications)。 VBA是面向行的。如果要分割一长条线,则必须在该行的末尾使用一个以空格(_)为前缀的换行符。

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,也就是根据您的评论(“点击按钮”),按钮。这一切都没有意义。

以控件和表单的名称为前缀开始。例如。

txt for TextBoxes,例如,txtUser
btn对于按钮,E,G,btnBuy
lst为列表框,E,G,lstNumOfKeys
lbl对于标签,E,G,lblResult
cbo为组合框,E,G,cboCountry
frm为形式,E,G,frmNavigation
fsub对于窗体控制,E,G,fsubNavigation

+0

NUM键是列表框名 – cinemassacres

+0

点击是按钮 – cinemassacres

+0

好的,但为什么名为List28的按钮?一个更好的名字是'btnBuy'的按钮和'lstNumOfKeys'列表框。目前的名字是误导性的。另外,不要在名称中使用空格,然后需要使用括号[]。 –