正在收到运行时错误13
。类型不匹配。但我不知道为什么。有什么帮助吗?
Sub Separate_with_OR_without_comission()
Dim I As Integer
Dim WRng As Range
Dim NoRng As Range
Dim NameRgn As Range
Dim TotalCRng As Range
Set WRng = Range("with_comission")
Set NoRng = Range("without_comission")
Set NameRgn = Range("total_comission_name")
Set TotalCRng = Range("ttotal_comission")
For I = 1 To NameRgn.Rows.Count
If TotalCRng.Rows(I) > 0 Then // ERROR HERE
WRng.Rows(I) = NameRgn.Rows(I)
End If
If TotalCRng.Rows(I) < 1 Then // AND HERE
NoRng.Rows(I) = NameRgn.Rows(I)
End If
Next I
End Sub
当我尝试使用其他测试单元很好时,问题就出在那些.....但是它们是“ttotal_comission”中的数字,为什么VBA将其作为其他内容?
最佳答案
问题在于Rows(I)
返回的是范围对象,而不是整数值。您应该完全像这样对语句进行限定:TotalCRng.Rows(I).Cells(1, 1).Value
或可能的TotalCRng.Cells(1, 1).Value
。照原样编写,如果恰好是单个单元格,Excel将从Rows(I)返回值,在这种情况下,将调用范围的value属性,但否则会引起您看到的Type Mismatch错误,因为尝试将范围与整数进行比较。
例:
'no error
Debug.Print Sheet1.Range("B1")
'type mismatch error
Debug.Print Sheet1.Range("B1:B12")
另外,请记住,只有合并范围的左上角单元格实际上会返回一个值。
关于vba - 在VBA中获取 “error: type mismatch”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4222823/