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 使用VBA,如何高亮显示一张图纸上一列列表中的值(如果该值存在于另一张图纸的范围内)_Excel_Vba - Fatal编程技术网

Excel 使用VBA,如何高亮显示一张图纸上一列列表中的值(如果该值存在于另一张图纸的范围内)

Excel 使用VBA,如何高亮显示一张图纸上一列列表中的值(如果该值存在于另一张图纸的范围内),excel,vba,Excel,Vba,我在“a”页的一列中有一个ID列表。在活页“B”上,我将这些ID分布在一个表格(a范围)中。如何搜索范围以查看表A中列出的每个值是否存在于表B中?我想确保工作表A中一列中的所有值都存在于工作表B中。这个宏应该检查并突出显示确实存在的值。因此,任何不存在的值都不会突出显示,我可以很容易地解决。目前,我们正在手动更新,但我需要它是动态的,因为我们正在做许多更改 下面是我到目前为止尝试过的,但我得到了一个“下一个没有为”的错误。我已经用vba编写了代码,但已经很长时间了。感谢您的帮助。 顺便说一句,直

我在“a”页的一列中有一个ID列表。在活页“B”上,我将这些ID分布在一个表格(a范围)中。如何搜索范围以查看表A中列出的每个值是否存在于表B中?我想确保工作表A中一列中的所有值都存在于工作表B中。这个宏应该检查并突出显示确实存在的值。因此,任何不存在的值都不会突出显示,我可以很容易地解决。目前,我们正在手动更新,但我需要它是动态的,因为我们正在做许多更改

下面是我到目前为止尝试过的,但我得到了一个“下一个没有为”的错误。我已经用vba编写了代码,但已经很长时间了。感谢您的帮助。 顺便说一句,直到我开始工作,我才真正关心它的颜色,所以我只选择了一个数字

Sub CaseIdCheck()

    Dim i, j, x As Integer
    Dim intValueToFind, testCaseId, tciPass1, tciPass2 As String
    Dim range1, range2 As Range

    range1 = Application.GotoActiveWorkbook.Sheets("B").Range("C4:U50")
    range2 = Application.GotoActiveWorkbook.Sheets("A").Range("i3:i145")

    For x = 1 To ActiveWorkbook.Sheets("A").CountA(Columns(9))
    If Cells(x, 9).Value <> Null Then
       testCaseId = Sheets("A").Cells(x, 9).Value

        For i = 1 To 100
            For j = 1 To 100
                If Sheets("B").Cells(i, j).Value = testCaseId Then
                    Sheets("A").Cells(x, 9).Interior.ColorIndex = 36
                Else
            Next j
        Next i

                End If
    Next x
    Else
    MsgBox ("end")
End Sub
Sub-CaseIdCheck()
尺寸i,j,x为整数
Dim intValueToFind、testCaseId、tciPass1、tciPass2作为字符串
变光范围1,范围2作为范围
range1=Application.GotoActiveWorkbook.Sheets(“B”).范围(“C4:U50”)
range2=Application.GotoActiveWorkbook.Sheets(“A”).Range(“i3:i145”)
对于x=1到ActiveWorkbook.Sheets(“A”).CountA(第(9)列)
如果单元格(x,9).Value为空,则
testCaseId=表(“A”).单元格(x,9).值
对于i=1到100
对于j=1到100
如果表(“B”).单元格(i,j).Value=testCaseId,则
板材(“A”)。单元(x,9)。内饰。颜色指数=36
其他的
下一个j
接下来我
如果结束
下一个x
其他的
MsgBox(“结束”)
端接头

是否需要使用VBA?您可以通过命名范围和条件高亮显示来实现这一点

创建一个新的命名范围(我们称之为
rngCheck
),该范围使用以下命名范围公式定义:

=B!$1:$1048576
然后将此条件格式应用于工作表“A”第I列:

=COUNTIF(rngCheck,I1)>0

然后选择所需的颜色(ColorIndex 36的RGB为R 255、G 255、B153)

我认为可能会出现错误,因为您有
If
块和
For
块。你试过重新排序代码吗?没有,但它在“下一个J”部分给了我错误。我是按逻辑写的,我认为应该是这样的。从表A中提取值如果不为空,检查表B上的值范围,如果存在,则突出显示工作表A上的单元格。冲洗并重复检查是否为空的原因,这样我就不会在工作表A中出现一百万个彩色空白单元格。B上的空白单元格范围就是这样。删除上面的
Else
Next j
,用
end if
替换它,我假设你的=B$。。。语句是否用于整个工作表?我需要检查的表B中的数据是多列多行的。我会在等待你的回答时试一试。是的,
=B$1:$1048576
为整张。如果只是针对特定的列和行,可以使用
=B$C$4:$U$50
刚刚试用过,它正是我想要的(我可以再增加字体大小吗?)。非常感谢你!