首页 文章

VBA - 变量获取ComboBox值,否则获取TextBox值错误

提问于
浏览
1

我正在编写一个从UserForm打开的VBA代码,其中包括2个ComboBoxes和2个TextBoxes,可以根据用户的选择形成2D矩阵 .

我用_x2201_搜索了我需要使用的表达式并偶然发现 IsNull ,但代码不起作用 . 我尝试的是:

If IsNull(Matrix_Size_1.value) = False And IsNull(Matrix_Size_2.value) = False Then
    lWidth = Matrix_Size_1.value
    lHeight = Matrix_Size_2.value

ElseIf IsNull(Matrix_Size_1.value) = True And IsNull(Matrix_Size_2.value) = True Then
    lWidth = Matrix_Hand_1.value
    lHeight = Matrix_Hand_2.value
End If

当然我还必须过滤更合理的情况:如果一个组合框是空的那么msgbox,如果一切都是空的那么msgbox但是我会处理它一旦我明白为什么我的代码不起作用 .

但是,如果我不从组合框中选择任何内容,我得到的错误是 Type mismatch ,即使If代码有两个组合框的选项为空 .

我很感激你的帮助 .

1 回答

  • 0

    如果Comboboxes .Style 属性设置为 fmStyleDropDownList ,则使用此选项

    If Matrix_Size_1.ListIndex = -1 And Matrix_Size_2.ListIndex = -1 Then
    

    如果Comboboxes .Style 属性设置为 fmStyleDropDownCombo ,则使用此选项

    If Len(Trim(Matrix_Size_1.Value)) = 0 And Len(Trim(Matrix_Size_2.Value)) = 0 Then
    

    您可以通过右键单击组合框并单击属性来检查设计模式中的 Style 属性 .

    Edit

    从评论中,我了解到你真的想要这个

    Dim lWidth  As Single, lHeight  As Single
    
    If Len(Trim(Matrix_Size_1.Value)) = 0 And Len(Trim(Matrix_Size_2.Value)) = 0 Then
        lWidth = Val(Matrix_Hand_1.Value) '<~~> Val will take care of mismatch caused by empty boxes
        lHeight = Val(Matrix_Hand_2.Value)
    Else
        lWidth = Val(Matrix_Size_1.Value)
        lHeight = Val(Matrix_Size_2.Value)
    End If
    

相关问题