是啥导致此运行时错误 13“类型不匹配”?
Posted
技术标签:
【中文标题】是啥导致此运行时错误 13“类型不匹配”?【英文标题】:What is causing this Run-time Error 13 "Type Mis-Match"?是什么导致此运行时错误 13“类型不匹配”? 【发布时间】:2016-10-04 19:41:20 【问题描述】:下面的代码根据哪些单元格包含“是”来增加一个变量。它一直有效,直到我使用自动填充将 F13:F59 中任何单元格的值设置为“是”。当我手动输入单词“是”时,不会发生运行时错误。但是自动填充似乎是导致问题的原因。
Select Case (changedcell)
'Issues Mgmt
Case Range("F15"), Range("F19"), Range("F23"), Range("F27"), Range("F30"), Range("F39"), Range("F42"), Range("F45"), Range("F50"), Range("F53"), Range("F54") 'Issues
If Range("F15").Value = "Yes" Then
issues = issues + 1
End If
If Range("F19").Value = "Yes" Then
issues = issues + 1
End If
If Range("F23").Value = "Yes" Then
issues = issues + 1
End If
If Range("F27").Value = "Yes" Then
issues = issues + 1
End If
If Range("F30").Value = "Yes" Then
issues = issues + 1
End If
If Range("F39").Value = "Yes" Then
issues = issues + 1
End If
If Range("F42").Value = "Yes" Then
issues = issues + 1
End If
If Range("F45").Value = "Yes" Then
issues = issues + 1
End If
If Range("F50").Value = "Yes" Then
issues = issues + 1
End If
If Range("F53").Value = "Yes" Then
issues = issues + 1
End If
If Range("F54").Value = "Yes" Then
issues = issues + 1
End If
If issues > 1 Then
Application.EnableEvents = False
MsgBox "Issues Management has already been selected under another old solution category.", vbCritical, "Duplicate Use Case Selected"
Range(target.Address).Value = ""
End If
End Select
代码的第一部分是发生错误的地方。有什么想法吗?
Case Range("F15"), Range("F19"), Range("F23"), Range("F27"), Range("F30"), Range("F39"), Range("F42"), Range("F45"), Range("F50"), Range("F53"), Range("F54") 'Issues
【问题讨论】:
这是Worksheet_Change
过程的一部分吗?
嗯...我很少使用Select Case
,但我以前从未见过它是这样构造的..(changedcell)
是什么?你的Case
在哪里?写Select Case
的意义不在于您不必编写一堆If Then Else
声明吗?
An example of Select Case
,微软要说什么about Select Case
请检查单元格中自动填充的内容;错误link 的解释指向单元格中的错误内容。
是的,这与Select Case
的用途完全相反。我不能肯定地说,但我怀疑是 Case 语句本身引发了错误。它期待一个布尔表达式,并得到一系列范围。
【参考方案1】:
试试这个:
Dim rIssues As Range
Dim rCll As Range
Set rIssues = Range("F15,F19,F23,F27,F30,F39,F42,F45,F50,F53,F54")
For Each rCll In rIssues
If rCll.Value = "Yes" Then Issues = 1 + Issues
Next
If Issues > 1 Then
Application.EnableEvents = False
MsgBox "Issues Management has already been selected under another old solution category.", _
vbCritical, "Duplicate Use Case Selected"
Range(Target.Address).Value = ""
End If
建议阅读以下页面:
For Each...Next Statement,
Select Case Statement
【讨论】:
我会测试目标是否与 rIssues 范围相交,只是为了避免在更改任何单元格时循环。也就是说,我假设 OP 在 WorkSheet_Change 事件中有这个。还要确保 EnableEvents 返回 True。 @ScottCraner 我假设这是 Worksheet_Change 事件的一部分,还假设交叉点和所有其他相关部分都在那里并且工作正常,因为问题确认只有在案例中使用自动填充时才会失败选择,所以似乎所有其他部分(我们只是不知道它是什么)都被很好地覆盖了。感谢您的意见... EEM 解决了我的问题!另外,感谢斯科特的建议。 EnableEvents 在 sub 结束时返回 true。以上是关于是啥导致此运行时错误 13“类型不匹配”?的主要内容,如果未能解决你的问题,请参考以下文章
运行时错误 13 类型不匹配,将数据从 Access 传输到 Excel
查找文件夹/子文件夹名称时 MS Access VBA 运行时错误“13”类型不匹配
在 Windows 机器上运行 Postgresql 11 时导致“更多无法识别...”错误的原因是啥?
打开金蝶kis专业版提示:运行时错误'13'类型不匹配是怎么回事?