未选中复选框时运行时错误13

时间:2019-05-25 01:27:59

标签: excel vba

我有一个简单的VBA宏应用程序。

三个复选框,每个复选框旁边都有一个对应的组合框。组合框包含0到4的数值,并且仅在单击相应的复选框时启用。

我得到一个run time error 13, type mismatch。我在代码中使用了if语句。

我尝试使用if elseif方法,但没有任何反应。

Private Sub cmdSave_Click()
    Dim wks As Worksheet Dim AddNew As Range
    Set wks = Sheet1 Set AddNew = wks.Range("A65356").End(xlUp).Offset(1,0)
    If chkApple.Enabled = True Then
        AddNew.Offset(0, 0).Value = 20 * cmbApple.Value
    End If
    If chkBanana.Enabled = True Then
        AddNew.Offset(0, 1).Value = 10 * cmbBanana.Value
    End If
    If chkPeers.Enabled = True Then
        AddNew.Offset(0, 2).Value = 30 * cmbPeers.Value
    End If
End Sub

Run Time Error 13
Type Mismatch

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为您不应该使用Enabled属性来尝试检测是否已选中复选框。只要您允许更改它们,它们就会启用 (在您的方案中,时间应该全部是 )。

由于您的始终处于启用状态,因此它正在运行:

 AddNew.Offset(0, 2).Value = 30 * cmbPeers.Value

,由于cmbPeers为空,因此它正确地抱怨该表达式。

如果选中复选框,则其value属性为true。因此,而不是:

If chkApple.Enabled = True Then

您应该拥有:

If chkApple.Value Then