我写了个宏,想在单元格内容不为空时就改颜色,但执行在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

解决方案 »

  1.   

    貌似运行没问题,EXCEL2007cstr(c.value)试试
      

  2.   

    Dim crange As Range, c As Range
      

  3.   


    1楼2楼都说了,只是简单了些,我补充详细一些:1. 没有显示定义时,c被定义为变体类型,这不会导致错误,但不是一个好习惯。2. 可能c.value是一个错误值,比如:在单元格输入公式 =1/0 会产生 #DIV/0 错误,
    错误值不能自动转换为字符类型,直接比较会产生类型不匹配错误,
    用CStr(c.Value)强制转换后再比较就不会出错,错误值转换为字符类型后是非空字符串。
    检查是否为错误值可以用IsError(c.Value)
      

  4.   

    If c.Value <> "" Then 
    改为 if c.value is null then
      

  5.   

    搞错了!应为以下内容If c.Value <> "" Then 
    改为 if len(c.value) =0 then