将我的文本转换为VBA中长度超过5个字符的任何颜色

将我的文本转换为VBA中长度超过5个字符的任何颜色,vba,excel,Vba,Excel,如果我的长度大于5,我想让我的绳子变成绿色。这是我的密码。有人能帮我吗,我一直在犯这样的错误: 对象不支持此属性 它将在此线路上失败: cc = Worksheets("sheet1").Range("C" & i) Worksheets("sheet1").Character(cc, i).Font.Color = vbRed Worksheets("sheet1").range("C" & i).Character(a).Font.Color = vbRed 因为Ran

如果我的长度大于5,我想让我的绳子变成绿色。这是我的密码。有人能帮我吗,我一直在犯这样的错误:

对象不支持此属性


它将在此线路上失败:

cc = Worksheets("sheet1").Range("C" & i)
Worksheets("sheet1").Character(cc, i).Font.Color = vbRed
Worksheets("sheet1").range("C" & i).Character(a).Font.Color = vbRed
因为Range返回一个Range,cc是一个字符串


它将在此线路上失败:

cc = Worksheets("sheet1").Range("C" & i)
Worksheets("sheet1").Character(cc, i).Font.Color = vbRed
Worksheets("sheet1").range("C" & i).Character(a).Font.Color = vbRed
因为字符只接受一个参数

尝试一下:

Sub deme()

Dim lastrow As Long
Dim a As Integer
Dim i As Long

  lastrow = Worksheets("sheet1").Range("C1").End(xlDown).Row - 1
  For i = 1 To lastrow
    If Len(Worksheets("sheet1").Range("C" & i).text) > 5 Then
      for a = 5 to Len(Worksheets("sheet1").Range("C" & i).text)
        Worksheets("sheet1").range("C" & i).Character(a).Font.Color = vbRed
      next
    End If
  Next i
End Sub
另外,请注意这一行:

cc = Worksheets("sheet1").Range("C" & i)
Worksheets("sheet1").Character(cc, i).Font.Color = vbRed
Worksheets("sheet1").range("C" & i).Character(a).Font.Color = vbRed
将设置除前5个字符外的所有字符为红色。您的问题希望将它们设置为绿色,因此请改用vbGreen

如果要将整个单元格内容设置为绿色,请替换:

      for a = 5 to Len(Worksheets("sheet1").Range("C" & i).text)
        Worksheets("sheet1").range("C" & i).Character(a).Font.Color = vbRed
      next

反而

Worksheets("sheet1").Character(cc, i).Font.Color = vbRed
我把它改成了

Worksheets("sheet1").Range("C" & i).Font.Color = vbRed
VBA有.Font.Color=vbRed和问题如果我的len大于5,我想让我的字符串变成绿色,因此我建议,如果需要,使用Record宏,选择ColumnC和HOME>Styles-条件格式,新规则…,使用公式确定要格式化的单元格,格式化此公式为真的值;:

格式…,字体,颜色:绿色,OK,OK停止录制


如果长度超过5个字符,这将格式化最后占用的单元格。

此外,我将代码更改为工作表Sheets1.Range C&i.Font.Color=vbRed及其工作方式,感谢要点:第一,它是字符而不是字符,第二,它包含两个可选参数。为什么要使用VBA执行此操作?为什么不使用条件格式?