excel中请用VBA让单元格中的数字着红色。

如题所述

很简单额!


Sub color_by_zzllrr()
Dim f,v,v2,f2
For i = 1 to Columns(3).Find("*", , , , 1, 2).Row
    f=True
    v=Range("C" & i)
    For j= 2 to 6
        v2 = Range("D" & i)
        f2 = false
        For m=1 to Len(v2)   
                If instr(v,mid(v2,m,1))>0 Then
                    f2 = true
                Else
                    f2 = false
                    break
                End If
        Next m
        If f2 Then
            f=False
            break
        End If
    Next j
    If f Then
        For j= 7 to 14
            v2 = Range("D" & i)
            f2 = false
            For m=1 to Len(v)   
                    If instr(v2,mid(v,m,1))>0 Then
                        f2 = true
                    Else
                        f2 = false
                        break
                    End If
            Next m
            If f2 Then
                f=False
                break
            End If
        Next j
        
        If f Then
            Range("C" & i).font.color=vbRed
        End If
    
    End if
    
Next i
End Sub

追问

break子过程或函数未定义。

追答

亲,把break全部替换为Exit For

追问

也不对,你试了一下没有?我试了一下全红了。

追答

我这里暂时不方便调试,你留意一下代码,在你第一个追问的时候,我改进过。
你重新复制最新的代码,然后把break全部替换为Exit For。试试呢

追问

试了,不行。先谢了。

追答

好的,那我明天来测试一下。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-04-22

一、假如要把当前选中区域中,包含数字的单元格的文字颜色变成红色,可以使用如下代码:

Sub test()
    Dim rng As Range
    For Each rng In Selection
        If IsNumeric(rng) Then
            rng.Font.ColorIndex = 3
        End If
    Next rng
End Sub

二、代码解释:使用FOR EACH循环,对当前选中区域进行遍历,再用IsNumeric
判断遍历到的单元格内是否为数字格式,如果是,执行文字着色语句:rng.Font.ColorIndex = 3把单元格数字颜色改为红色。

第2个回答  推荐于2016-05-27

代码如下,详见附件。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   Dim Ra As Range, B1 As Boolean, B2 As Boolean, S$
   If Target <> "双击着色" Then Exit Sub
   Cancel = True
   Range("A:A").Font.ColorIndex = 0
   For Each Ra In Range("A:A").SpecialCells(2)
      S = Ra.Text: B1 = True: B2 = True
      For i = 2 To 14
         If i <= 7 Then
            If Bj(Range("B" & i).Text, S) Then B1 = False: Exit For
         Else
            If Bj(S, Range("B" & i).Text) Then B2 = False: Exit For
         End If
      Next
      If B1 And B2 Then Ra.Font.ColorIndex = 3
   Next
End Sub
Function Bj(S1$, S2$) As Boolean
   For i = 1 To Len(S1)
      If InStr(S2, Mid(S1, i, 1)) = 0 Then Bj = False: Exit Function
   Next
   Bj = True
End Function


本回答被提问者采纳
第3个回答  2014-11-18
hdtrbhtryujytu6t
相似回答