【问题标题】:How can I show a value based on multiple conditions?如何根据多个条件显示值?
【发布时间】:2020-05-22 13:05:07
【问题描述】:

在我的表单中,我希望用户能够根据选项框并根据他们的输入看到颜色或动物。到目前为止我尝试过的代码对我不起作用,我认为这是因为我不明白如何正确格式化它。

我已经尝试为每种颜色的每个数字执行此操作,我尝试将数字添加为可能的值,并尝试创建一个数组。但是没有成功。

例如。

如果选择了Optionbutton A,并且textbox A 的值为1、4 或10,则textbox B 将显示为蓝色。但如果 textbox A 的值为 2、3、5 或 9,则 textbox B 将显示绿色。

示例 2。

Optionbutton B,而textbox A 的值为 1、3、4、10 或 12,则 textbox B 将显示蝴蝶。但如果 textbox A 的值为 2、5、7,则 textbox B 将显示 Caterpie。

添加了注释,我不知道表单是否可能,但如果用户要在选项框之间切换,则文本框 B 会相应更改。

Private Sub txtboxA_Change()

Dim txtboxA As String
Dim Colourarray As Variant

Blue = Array("1", "4", "10")

Me.txtboxA.MaxLength = 2

'If OptA is selected then pick colour based on textbox value

If Me.OptA.Value = True And Me.txtboxA.Value = "1" Then 'This bit seemed to work, but once I copied this for every number which needs to show green, vba got unhappy at me. 
'If Me.OptA.Value = True And Me.txtboxA.Value = "1", "4", "10" Then
'If Me.optA.Value = True And (Poort = "1", "4", "10") Then
'If Me.txtboxA.Value = Colourarray And Me.optA.Value = True Then
Me.txtboxB.Value = "Blue"
End If
End Sub

【问题讨论】:

  • 正确的语法是这样Value = "1" Or Value = "4"等等。

标签: excel vba multiple-conditions


【解决方案1】:

这使用了一个选择案例而不是一个 if。

Private Sub txtboxA_Change()

    Dim txtboxA As String
    Dim optionchoice As Long

    Me.txtboxA.MaxLength = 2

    'option A = 1; option B = 2
    If Me.optA.Value = True Then 'Easier to do a select case on optionchoice over option button
        optionchoice = 1
    ElseIf Me.optB.Value = True Then
        optionchoice = 2
    End If


    Select Case optionchoice 'Based on Option Button selection
        Case 1 'Option A
            Select Case Me.txtboxA.Value 'Based on Text Box value
                Case 1, 4, 10
                    Me.txtBoxB.Value = "Blue"
                Case 2, 3, 5, 9
                    Me.txtBoxB.Value = "Green"
            End Select
        Case 2 'Option B
            Select Case Me.txtboxA.Value
                Case 1, 3, 4, 10, 12
                    Me.txtBoxB.Value = "Butterfly"
                Case 2, 5, 7
                    Me.txtBoxB.Value = "Caterpie"
            End Select
        End Select

End Sub

【讨论】:

  • 这对我帮助很大,也让我扩展了不同的案例。非常感谢!我想知道,当txtBoxA 中的值未被识别时,是否可以为txtBoxB 赋值?
  • 是的,有一个case else,只需将它贴在内case语句的底部即可。
猜你喜欢
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 2021-05-05
  • 2021-04-19
  • 1970-01-01
相关资源
最近更新 更多