【问题标题】:how to use comboboxes in if statements如何在 if 语句中使用组合框
【发布时间】:2017-09-27 14:26:54
【问题描述】:

我正在开发这个程序,你可以填写你需要多少表面和你想要的颜色,然后你会得到颜色的配方。但是我在组合框选择颜色时遇到了一个小问题,我似乎无法修复它,有人可以帮助我吗?这是我编写的代码(我对 vba 很陌生)

Dim X As Integer
Dim A As Integer
Dim B As Integer

Private Sub UserForm_Initialize()

    With ComboBox1
        .AddItem "Colour1"
        .AddItem "Colour2"
        .AddItem "Colour3"
    End With

End Sub

Private Sub CommandButton1_Click()

    X = TextBox1.Text
    Range("B2") = X

    Range("B9").Value = A
    Range("B10").Value = B

End Sub

Private Sub ComboBox_Change()

    If ComboBox1.Text = "Colour1" Then
        A = 3 And B = 5

    ElseIf ComboBox1.Text = "Colour2" Then
        A = 7 And B = 6

    ElseIf ComboBox1.Text = "Colour3" Then
        A = 4 And B = 8

    End If

End Sub

由于某种原因,我所做的部分是 if 语句不起作用。

【问题讨论】:

    标签: excel combobox vba


    【解决方案1】:

    我看到的一些东西。

    您的ComboBox_Change 必须是ComboBox1_Change,因此您没有引用正确的ComboBox

    您将string 分配给Integer 变量。你应该更喜欢Dim X as String

    如果您希望 AB 变量在该模块的所有 Subs 中可用,那么您需要使用 Public A and Integer。否则AB 中将没有值。

    您还需要引用Sheet,其中Range("B9")Range("B10")。因此,如果它在 sheet1 中,那么 ThisWorkBook.Sheets("sheet1").Range("B9").

    见下面的修改代码:

    Option Explicit
    
    Public X As String
    Public A As Long
    Public B As Long
    
    Private Sub UserForm_Initialize()
    
        With ComboBox1
            .AddItem "Colour1"
            .AddItem "Colour2"
            .AddItem "Colour3"
        End With
    
    End Sub
    
    Private Sub CommandButton1_Click()
    
        X = TextBox1.Text
        Range("B2") = X
    
        Sheet1.Range("B9").Value = A
        Sheet1.Range("B10").Value = B
    
    End Sub
    ' added the 1 to make it ComboBox1 which is the correct reference
    Private Sub ComboBox1_Change()
    
        If ComboBox1.Text = "Colour1" Then 
            'You can use And when assigning Variables values
            'You need to do it seperately.
            A = 3
            B = 5
    
        ElseIf ComboBox1.Text = "Colour2" Then
            A = 7
            B = 6
    
        ElseIf ComboBox1.Text = "Colour3" Then
            A = 4
            B = 8
    
        End If
    
    End Sub
    

    【讨论】:

    • 我明白了......现在我改变了它,但我仍然有 Range("B9") 和 Range("B10") 不会改变它会给它们的值的问题跨度>
    • 查看我的编辑@justin。使用Range() 时还应该引用Sheet,否则会出错或使用ActiveSheet
    • @justin 再次检查我的答案
    • 但是我仍然有这个问题,我认为我只是没有看到正确的东西或其他东西。这就是我现在所拥有的。
    • 我要试试这个
    猜你喜欢
    • 1970-01-01
    • 2012-08-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多