我有一个表格,其中(除其他事项外)有三个专用的选项。
optDealerPay
optCustomerPay
optNoTradeIn
我一次只能选择一个,但是在最初设计时,我将它们分成三个单独的表列而不是一个,并使用一个选项组。主要是因为我也想要一份正在处理的报告的输出。无论如何,当选择一个时,其他两个都进入Enabled = False
。我遇到的问题是,在加载表单时(实际上使用Form_Current()
以确保在“检查”之前加载记录),表单将禁用两个未选择的选项之一,但不会禁用另一个。这是一张图片:
这是我正在使用的代码:
Private Sub Form_Current()
If Me.optDealerPay Then
Me.optCustomerPay.Enabled = False
Me.optNoTradeIn.Enabled = False
Else
Me.optCustomerPay.Enabled = True
Me.optNoTradeIn.Enabled = True
End If
If Me.optCustomerPay Then
Me.optDealerPay.Enabled = False
Me.optNoTradeIn.Enabled = False
Else
Me.optDealerPay.Enabled = True
Me.optNoTradeIn.Enabled = True
End If
If Me.optNoTradeIn Then
Me.optDealerPay.Enabled = False
Me.optCustomerPay.Enabled = False
Else
Me.optDealerPay.Enabled = True
Me.optCustomerPay.Enabled = True
End If
End Sub
在重新设计表结构之外,还有什么更好的方法可以做到这一点,如果可能的话,我真的在尝试避免这种方法。在三个选项中的每个选项上,AfterUpdate()
过程都使用了类似的代码。
答案 0 :(得分:2)
您的代码将逐个执行每个if语句-有点混乱。在设计模式下启用所有单选按钮,然后尝试以下代码:
Private Sub Form_Current()
If Me.optDealerPay Then
Me.optCustomerPay.Enabled = False
Me.optNoTradeIn.Enabled = False
ElseIf Me.optCustomerPay Then
Me.optDealerPay.Enabled = False
Me.optNoTradeIn.Enabled = False
ElseIf Me.optNoTradeIn Then
Me.optDealerPay.Enabled = False
Me.optCustomerPay.Enabled = False
Else
' Maybe you should do something if none of the options is true
End If
End Sub
答案 1 :(得分:1)
您当前的代码实质上可以简化为:
data_foo %>%
mutate(irr = isTRUE(all.equal(A, B)))
也就是说,如果单选按钮为空或未选中,则该按钮被禁用;否则它已启用。
但是,尽管这是您所要求的行为,但是我不确定这是否可取,因为一旦用户选择了一个选项,便无法更改它。