Horizo​​ntalAnchor 在 Access 中给出了错误的值

HorizontalAnchor gives wrong value in Access

问题:Control.HorizontalAnchor 或 Control.VerticalAnchor 得到的值超出了可接受的范围。

在IDEwindow中: Debug.Print Btn.VerticalAnchor --> 结果:4864

立即window: ?Btn.VerticalAnchor --> 0

同一条线。相同的代码。

我很难过。请帮忙。

L.E.: 显然这个值在某种程度上被扭曲了 If Btn.HorizontalAnchor = acHorizontalAnchorRight Then

我遇到了几乎相同的问题 运行 Microsoft Access 2013 x64 15.0.5349 (VBA 7.01).

对我来说,控件 HorizontalAnchor 属性 包含预期的 AcHorizontalAnchor 枚举值加上 25344.

所以如果控件 HorizontalAnchor 配置为 acHorizontalAnchorLeft (0) 它包含 25344.
对于 acHorizontalAnchorRight (1) 它包含 25345.
对于 acHorizontalAnchorBoth (2),它包含 25346.

比较我的值 25344 和你的值 4864 我可以看到它们的二进制表示都在高字节中包含额外的设置位:

Decimal Binary
4864 1 0011 0000 0000
25344 110 0011 0000 0000

所以我使用的解决方法是忽略 Horizo​​ntalAnchor 的高字节:

If (xControl.HorizontalAnchor And &HFF) = _
    AcHorizontalAnchor.acHorizontalAnchorLeft Then _
    Debug.Print "-> Left"

If (xControl.HorizontalAnchor And &HFF) = _
    AcHorizontalAnchor.acHorizontalAnchorRight Then _
    Debug.Print "-> Right"

If (xControl.HorizontalAnchor And &HFF) = _
    AcHorizontalAnchor.acHorizontalAnchorBoth Then _
    Debug.Print "-> Both"

应该与VerticalAnchor类似。