vba - MS Access : eval() returns NULL when accessing . 列(x,y)属性

标签 vba ms-access null listbox eval

我有一个表单并验证它,我正在使用 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/

相关文章:

vba - 从 csv 导入到 ms Access 表

mysql - SQL 多个 NOT LIKE 可能包含 NULL 值

我们可以在 C 中将 (void *)0 称为空指针吗?

vba - 通过vba在Excel中添加单元格公式

java - java swing 中未找到列错误消息

sql - VBA 中是否有针对没有结果的 sql 查询的解决方法?

java - 登录系统并有权 Access

c++ - 检查空指针

Excel 宏 - 删除以某些字符开头的单词

excel - 在工作簿之间共享一个模块?