我写了个宏,想在单元格内容不为空时就改颜色,但执行在c.Value <> ""语句处,显示"Run-time error '13' Type mismatch",请问为什么?要怎么了改?Sub Macro4()Dim crange As RangeSet crange = Range("A1:E200") For Each c In crange
If c.Value <> "" Then
c.Interior.Color = RGB(0, 255, 0)
End If
Next cEnd Sub
If c.Value <> "" Then
c.Interior.Color = RGB(0, 255, 0)
End If
Next cEnd Sub
1楼2楼都说了,只是简单了些,我补充详细一些:1. 没有显示定义时,c被定义为变体类型,这不会导致错误,但不是一个好习惯。2. 可能c.value是一个错误值,比如:在单元格输入公式 =1/0 会产生 #DIV/0 错误,
错误值不能自动转换为字符类型,直接比较会产生类型不匹配错误,
用CStr(c.Value)强制转换后再比较就不会出错,错误值转换为字符类型后是非空字符串。
检查是否为错误值可以用IsError(c.Value)
改为 if c.value is null then
改为 if len(c.value) =0 then