我有一个表单并验证它,我正在使用 eval()。背景是,我在表格中定义了规则。这些规则包含占位符。规则被编译,然后 eval() 应该检查它是真还是假。
一条规则的一部分包含对列表框值的检查。我发现这就是问题所在。我可以将其简化为以下内容:
Application.Forms("frmDMAE").lstHistory.Column(6, Application.Forms("frmDMAE").lstHistory.ListCount - 1)
返回即2,
eval("Application.Forms(""frmDMAE"").lstHistory.Column(6, Application.Forms(""frmDMAE"").lstHistory.ListCount - 1)")
返回 NULL - 但我不明白为什么!?
eval("Application.Forms(""frmDMAE"").lstHistory.Column(6, 5)")
也返回NULL!?第 6 列第 5 行肯定包含一个数值。
还将以下内容粘贴到调试窗口中,在两种情况下都会显示“2”作为返回值:
Application.Forms("frmDMAE").lstHistory(6, Application.Forms("frmDMAE").lstHistory.ListCount - 1)
Application.Forms("frmDMAE").lstHistory.Column(6, 5)
有人知道吗???我一毛钱都没有了。
[编辑]
安德烈的解决方案有效。只需更改 Eval() 中 .Column 属性的索引即可。使用 .Column(rowindex, colindex) 而不是 .Column(colindex, rowindex)!
[/编辑]
非常感谢, 托马斯
最佳答案
哇。多么奇怪的事情啊。
显然,当与 Eval()
一起使用时,您必须切换 .Column
属性的参数(或数组索引)。
我的列表框有 2 行 7 列,第 6 列有一个数字(= 第 5 列)。
? Forms!myForm!myList.Column(5,1)
3600
? Eval("Forms!myForm!myList.Column(5,1)")
Null
? Eval("Forms!myForm!myList.Column(1,5)")
3600
我真的不知道该怎么办。
注意:我使用的是 Access 2010。
关于vba - MS Access : eval() returns NULL when accessing . 列(x,y)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40422184/