2017-08-04 51 views
1

我有一个VBA模块,它查看Access控件并仅选择acTextBox或acCheckBox的控件。但是,在我的If语句中,我遇到了一个逻辑故障,应该只允许acTextBox = 109和acCheckBox = 106控件通过,但它现在让标签通过,控制值为100,如您在即时窗口中看到的那样。怎么回事?Im stumped ..它工作,如果我删除“或acCheckBox”,但允许标签通过时,我包括它,即使标签不是复选框。损坏的VBA控制逻辑

这是一个问题,因为它稍后会给我一个错误。

干杯

Code

For Each ctl In frm.Controls Debug.Print ctl.Name 
    With ctl 
    Debug.Print ctl.ControlType 
    'Avoid labels and other controls with Value property. 
    If .ControlType = acTextBox Or acCheckBox Then 
     If .Value <> .OldValue Then 
+0

'acTextBox或者acCheckBox'等同于'109或106'这是Ë相当于'111'。如果你在代码中包含你的代码,我们可以告诉你如何通过复制/粘贴你的代码来修复它,然后编辑它,但是我肯定不会从头开始输入你的代码。 – YowE3K

回答

4

更换你行

If .ControlType = acTextBox OR acCheckBox Then 

与此

If (.ControlType = acTextBox) OR (.ControlType = acCheckBox) Then 
+2

你很善良 - 当他们只是给出问题中的代码图片时,我通常会坚持让他们用实际代码替换它,然后再给他们提供工作代码。 :D(图片很难搜索引擎索引,这使得一个非常贫穷的问题。) – YowE3K

+0

已验证。此外,上传的代码用于索引目的。爱这个社区。 @ YowE3K –

+0

我没有看到使用图片的后果。感谢您的解释。 –