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

时间:2015-03-17 02:55:32

标签: excel vba excel-vba

如果我的len大于5,我想让我的字符串变成绿色。
这是我的代码。任何人都可以帮助我,我一直收到这个错误:

  

对象不支持此属性

Sub deme()

    Dim lastrow As Long
    Dim a As Integer
    a = 1
    Dim cc As String
    Dim i As Long

    lastrow = Worksheets("sheet1").Range("C1").End(xlDown).Row - 1
    For i = a To lastrow
        cc = Worksheets("sheet1").Range("C" & i)
        If Len(cc) > 5 Then
            Worksheets("sheet1").Character(cc, i).Font.Color = vbRed
        End If
    Next i
End Sub

3 个答案:

答案 0 :(得分:0)

这一行会失败:

cc = Worksheets("sheet1").Range("C" & i)

因为Range()返回一个范围而cc是一个字符串。

这一行会失败:

Worksheets("sheet1").Character(cc, i).Font.Color = vbRed

因为Character()只接受一个参数。

尝试一下:

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

另外,请注意这一行:

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").range("C" & i).font.color = vbGreen

答案 1 :(得分:0)

不是

Worksheets("sheet1").Character(cc, i).Font.Color = vbRed

我改变了

Worksheets("sheet1").Range("C" & i).Font.Color = vbRed

答案 2 :(得分:0)

VBA有.Font.Color = vbRed和问题I want to make my string turn into green color if my len is bigger then 5所以我建议,如果需要,使用录制宏,选择ColumnC和HOME>样式 - 条件格式,新规则...,使用公式确定要格式化的单元格格式化此公式为真的值;

=LEN(C1)>5  

格式... ,字体,颜色:绿色,OK,OK(停止录制)。

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