Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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
Excel 如果不同工作表上相同范围内的同一单元格已着色,则为该范围内的单元格着色?_Excel_Vba - Fatal编程技术网

Excel 如果不同工作表上相同范围内的同一单元格已着色,则为该范围内的单元格着色?

Excel 如果不同工作表上相同范围内的同一单元格已着色,则为该范围内的单元格着色?,excel,vba,Excel,Vba,在VBA中,我标记某个范围内的结果,并根据单元格值(例如值

在VBA中,我标记某个范围内的结果,并根据单元格值(例如值<“28”)将其着色为绿色。每张图纸(共四张)对应于不同的标记,并根据值标记为绿色。所有板材都具有相同的X轴和Y轴,板材之间的关注范围相同(B2:BJ26)。我想做第五张,如果其他表格中的其他四个对应单元格都是绿色的,则将相应单元格涂成绿色

我可以一个细胞一个细胞地做

简化示例

If Sheets(A) "B2" value < 30 AND Sheets(B) "B2" Value > 1.1 AND Sheets(C) "B2" Value < 1500 AND Sheets(D) "B2" Value > 0.30 THEN Sheets(E) "B2" interior.color = RGB(0,255,0) 
如果图纸(A)“B2”值<30,图纸(B)“B2”值>1.1,图纸(C)“B2”值<1500,图纸(D)“B2”值>0.30,则图纸(E)“B2”内饰颜色=RGB(0255,0)
但是对于B2:BJ26范围内的所有单元,必须有一种更有效的方法。请找个更有技术的人来帮我

我正在使用的工作代码示例为前四页上的值着色/标记

Worksheets("Sheet 1").Activate

Dim XXXXXXX As Range, cell As Range
Set XXXXXXX = Range("B2:BJ26")

For Each cell In XXXXXXX

If cell.Value < "28" And cell.Value > "1" Then
        cell.Interior.Color = RGB(0, 255, 0)
    End If

Next
工作表(“表1”)。激活
尺寸XXXXXXX作为范围,单元格作为范围
设置XXXXXXX=范围(“B2:BJ26”)
对于XXXXXXX中的每个单元格
如果单元格数值<“28”和单元格数值>“1”,则
cell.Interior.Color=RGB(0,255,0)
如果结束
下一个

这段代码帮我完成了任务。让我知道它是否给了你预期的结果

Option Explicit

Sub ColorSheetFive()
    Dim i As Integer
    Dim m As Integer
    Dim n As Integer
    Dim allGreen As Boolean

    For m = 2 To 26
        For n = 2 To 62
            allGreen = True
            For i = 1 To 4
                If Sheets(i).Cells(m, n).Interior.Color <> RGB(0, 255, 0) Then
                    allGreen = False
                End If
            Next i
            If allGreen Then
                Sheets(5).Cells(m, n).Interior.Color = RGB(0, 255, 0)
            End If
        Next n
    Next m

    MsgBox "Color checking complete!"

End Sub
选项显式
第五分节()
作为整数的Dim i
将m作为整数
作为整数的Dim n
Dim allGreen作为布尔值
对于m=2到26
对于n=2到62
全绿=真
对于i=1到4
如果纸张(i).单元格(m,n).Interior.Color RGB(0,255,0),则
全绿=假
如果结束
接下来我
如果是绿色的话
表(5).单元格(m,n).Interior.Color=RGB(0,255,0)
如果结束
下一个
下一个m
MsgBox“颜色检查完成!”
端接头

当发现非绿色时,您可以通过退出for循环来稍微缩短它。我考虑过这一点,但宏在测试时运行得太快,节省的时间几乎不值得在键盘上敲击它。出于某种原因,此代码对我不起作用。代码运行正常,但指定范围内的单元格均为绿色。@JakeKurdys,您需要根据前四页中的内容设置RBG值。目前它被设置为纯绿色(RGB(0255,0)),但这可能不是您的单元格中的绿色。