Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 基于单元格中的值为单元格着色_Vba_Excel - Fatal编程技术网

Vba 基于单元格中的值为单元格着色

Vba 基于单元格中的值为单元格着色,vba,excel,Vba,Excel,使用宏,我将多个工作簿中的信息合并到新工作簿中的一张工作表中 在一列中,我创建了一个名为ColRange的命名范围。该列的数字范围为-350到500 如何根据单元格中文本的值更改单元格的颜色。 红色(0-500) 黄色(-5-0) 绿色(-350--5)假设值是存储在列中的数字,然后: If value >= 0 AND value <= 500 Then ColRange.Interior.Color = RGB(255,0,0) ElseIf value >= -

使用宏,我将多个工作簿中的信息合并到新工作簿中的一张工作表中

在一列中,我创建了一个名为ColRange的命名范围。该列的数字范围为-350到500

如何根据单元格中文本的值更改单元格的颜色。
红色(0-500) 黄色(-5-0)
绿色(-350--5)

假设值是存储在列中的数字,然后:

If value >= 0 AND value <= 500 Then
    ColRange.Interior.Color = RGB(255,0,0)
ElseIf  value >= -5 Then
    ColRange.Interior.Color = RGB(255,255,200)
Else
    ColRange.Interior.Color = RGB(0,255,0)
End If
如果值>=0且值=-5,则
ColRange.Interior.Color=RGB(255255200)
其他的
ColRange.Interior.Color=RGB(0255,0)
如果结束
并且假设大于500或小于-350的值是不可能的,或者通过脚本验证。另外,您的范围有点重叠,0应该是什么颜色?红色还是黄色?

看看。您甚至可能不需要VBA来执行此操作

也就是说,VBA代码看起来像这样:

Public Sub colorit()
    Dim colRange As Range
    Dim rowNum As Integer
    Dim rnum As Integer

    rnum = 20
    Set colRange = Range(Cells(2, 9), Cells(rnum, 9))

    For rowNum = 1 To colRange.Rows.Count
        If colRange.Cells(rowNum, 1).Value <= -5 Then
            colRange.Cells(rowNum, 1).Interior.Color = RGB(0, 255, 0)
        ElseIf colRange.Cells(rowNum, 1).Value <= 0 Then
            colRange.Cells(rowNum, 1).Interior.Color = RGB(255, 255, 0)
        ElseIf colRange.Cells(rowNum, 1).Value <= 500 Then
            colRange.Cells(rowNum, 1).Interior.Color = RGB(255, 0, 0)
        End If
    Next rowNum
End Sub
Public Sub colorit()
暗淡的颜色范围
将rowNum设置为整数
作为整数的Dim rnum
rnum=20
设置colRange=Range(单元格(2,9),单元格(rnum,9))
对于rowNum=1到colRange.Rows.Count

如果colRange.Cells(rowNum,1).Value这是对原始问题的回答,这是对Vincent回答的简单修改:

如果是命名范围(使用UI:Insert、Name、Define):

尺寸c作为范围
对于范围内的每个c(“ColRange”)。单元格
如果c.值>=0且c.值=-5,则
c、 Interior.Color=RGB(255、255、200)
其他的
c、 Interior.Color=RGB(0,255,0)
如果结束
下一个c
如果是代码中定义的范围对象:

Dim c as Range

For Each c In colRange.Cells

    If c.Value >= 0 And c.Value <= 500 Then
        c.Interior.Color = RGB(255, 0, 0)
    ElseIf c.Value >= -5 Then
        c.Interior.Color = RGB(255, 255, 200)
    Else
        c.Interior.Color = RGB(0, 255, 0)
    End If

Next c
尺寸c作为范围
对于colRange.单元格中的每个c
如果c.值>=0且c.值=-5,则
c、 Interior.Color=RGB(255、255、200)
其他的
c、 Interior.Color=RGB(0,255,0)
如果结束
下一个c

我认为Vincent的反应不会很有效,因为它试图在整个ColRange范围内操作,在If-Then内,而不是一次操作一个细胞。(出于这个原因,您可能还想用Application.screenUpdatement=False来包装它,请发布您当前的代码。虽然尝试了这两种方法,但没有任何乐趣:(我通过以下集合定义rane colRange=Range(Cells(2,9),Cells(rnum,9))。选择此选项将突出显示单元格,因此显然正在做一些事情任何帮助我已更改代码以使用您对colRange的设置。我刚刚为rnum选择了一个值20。我已在Excel 2000中对此进行了测试,效果非常好。您有什么版本的Excel?
Dim c as Range

For Each c In colRange.Cells

    If c.Value >= 0 And c.Value <= 500 Then
        c.Interior.Color = RGB(255, 0, 0)
    ElseIf c.Value >= -5 Then
        c.Interior.Color = RGB(255, 255, 200)
    Else
        c.Interior.Color = RGB(0, 255, 0)
    End If

Next c