【问题标题】:ControlSource of a TextBox doesn't work when added through VBA通过 VBA 添加时,TextBox 的 ControlSource 不起作用
【发布时间】:2020-04-23 16:00:29
【问题描述】:

这是我的问题:

我正在尝试在 Access Form 中设置 TextBox 的 ControlSource,如下所示:

 nombres(0)= "Tabla"
 TextBox1.ControlSource= "=FormatoNúmero(DCont(""*"",""" & nombres(0) & """),0,0,0,-2)"

我的区域配置将“ListSeparator”设置为“;”并且无法更改,因为其他应用程序需要这样做。

表达式 "=FormatoNúmero(DCont(""*"",""" & nombres(0) & """),0,0,0,-2)",其中“nombres(0)”是一个格式正确的域名,已在设计视图中检查为工作正常,但使用“;”反而。

如果在 VBA 代码中使用“;”,模块会抛出 2438 错误“wrong sintaxis”。使用 "," 模块可以正常工作并为 TextBox1 设置 controlsource 属性。

点是表单执行的时间,在这些设置下,TextBox1 显示“#¿Nombre?”

让我抓狂的是,如果在编辑视图中编辑如此创建的 TextBox1.ControlSource,表达式已更改为 "=FormatoNúmero(DCont("*";"Tabla");0; 0;0;-2)",预期结果,只需点击 "接受" theTextBox1 将结果评估为预计。

请问,有什么提示吗?

提前致谢

【问题讨论】:

  • 既然是在代码中设置,为什么要直接设置ControlSource而不是Value?
  • 老实说,我没想到。你是对的,我不确定我是否知道,但值得一试。即便如此,以及进一步的需求:关于如何解决实际问题的任何想法?
  • 您可以随时在设计模式下设置ControlSource,然后调用TextBoxName.Requery更新其值。
  • Kostas,感谢您的提示,但不幸的是,第二个不起作用。它一直显示“#¿Nombre?”重新查询后...我正在尝试您的其他方法
  • 当然可以用 VBA 设置 ControlSource 属性。我已经做了。然而,从来没有像你这样复杂的表达方式。因为我在美国,所以逗号用作分隔符。在你使用双引号的地方,我会使用单撇号。

标签: vba ms-access comma


【解决方案1】:

尤里卡!!

经过一些研究并在社区的宝贵帮助下,我找到了解决方案。简单明了的事情,我自己永远也达不到:用 VBA 代码用英语而不是西班牙语写公式!这就是所有的人!简单易行。

nombres(0)= "Tabla"
 TextBox1.ControlSource= "=FormatNumber(DCount(""*"",""" & nombres(0) & """),0,0,0,-2)"

感谢 June、Kostas 和 Pitxiku

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多