我有一个简单的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
答案 0 :(得分:1)
我认为您不应该使用Enabled
属性来尝试检测是否已选中复选框。只要您允许更改它们,它们就会启用 (在您的方案中,时间应该全部是 )。
由于您的始终处于启用状态,因此它正在运行:
AddNew.Offset(0, 2).Value = 30 * cmbPeers.Value
,由于cmbPeers
为空,因此它正确地抱怨该表达式。
如果选中复选框,则其value
属性为true。因此,而不是:
If chkApple.Enabled = True Then
您应该拥有:
If chkApple.Value Then