MS Access:当访问.Column(x,y)属性时,eval()返回NULL

时间:2016-11-04 12:01:57

标签: vba null listbox access-vba eval

我有一个表单并验证它,我正在使用eval()。背景是,我在表中定义了规则。这些规则包含占位符。编译规则,然后eval()应该检查它的真或假。

一条规则的一部分包含对列表框值的检查。我发现这是问题所在。我可以把它减少到以下几点:

Application.Forms("frmDMAE").lstHistory.Column(6, Application.Forms("frmDMAE").lstHistory.ListCount - 1)

返回ie,

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)!

[/编辑]

非常感谢, 托马斯

1 个答案:

答案 0 :(得分:2)

哇。多么奇怪的事。

显然,当.ColumnEval()一起使用时,您必须切换? Forms!myForm!myList.Column(5,1) 3600 ? Eval("Forms!myForm!myList.Column(5,1)") Null ? Eval("Forms!myForm!myList.Column(1,5)") 3600 属性的参数(或数组索引)。

我的列表框有2行7列,第6列(= 5列)中有一个数字。

for

我真的不知道该怎么做。

注意:我使用的是Access 2010。