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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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_Worksheet - Fatal编程技术网

Vba 从其他工作表中查找值(循环中的循环)

Vba 从其他工作表中查找值(循环中的循环),vba,excel,worksheet,Vba,Excel,Worksheet,我想使用VBA将excel进程原子化 脚本必须在第3页的选定区域中逐单元格执行。每个单元格包含一个数字或为空。 脚本将转到并搜索Sheet2上特定范围内每个单元格的值。当它找到某个内容时,找到该内容的整行内容必须以粗体显示。 如果找不到任何东西,它将直接进入下一个单元格 在这里浏览了stackoverflow和不同的指南之后,我设法整理了一个脚本。它没有错误,但它什么也不做 我假设它必须在代码中定位,但我找不到任何相关信息。 经过12个小时的努力,我将非常感谢你的帮助 干杯 For Each

我想使用VBA将excel进程原子化

脚本必须在第3页的选定区域中逐单元格执行。每个单元格包含一个数字或为空。 脚本将转到并搜索Sheet2上特定范围内每个单元格的值。当它找到某个内容时,找到该内容的整行内容必须以粗体显示。 如果找不到任何东西,它将直接进入下一个单元格

在这里浏览了stackoverflow和不同的指南之后,我设法整理了一个脚本。它没有错误,但它什么也不做



我假设它必须在代码中定位,但我找不到任何相关信息。 经过12个小时的努力,我将非常感谢你的帮助

干杯

For Each xlCell In xlRng
    Worksheets("Sheet2").Activate
        If xlCell.Value = valueToFind Then
            xlCell.EntireRow.Font.Bold = True
        End If
Next xlCell  
我不知道你们并没有得到什么,但我假设你们并没有得到想要的那个排粗体字。用for循环和run替换上述代码。
我没有测试它,但不确定它是否工作。

您可以使用
Find
方法来实现这一点,而不是第二个循环

Sub MacroText()
    Dim xlRng As Range
    Dim rng As Range
    Dim xlSht As Worksheet
    Dim sht As Worksheet
    Dim iLastRow As Long
    Dim iRow As Long
    Dim bFound As Boolean
    Dim xCell As Range
    Dim xlCell As Range
    Dim valueToFind As String
    Dim FoundRange As Range

    bFound = False
    Set sht = ActiveWorkbook.Worksheets("Sheet3")
    Set xlSht = ActiveWorkbook.Worksheets("Sheet2")
    Set rng = Selection
    Set xlRng = ActiveWorkbook.Worksheets("Sheet2").Range("A:A")

    iLastRow = xlSht.Range("A1").End(xlDown).Row

    Set xlRng = xlSht.Range("A1:A" & iLastRow)

    For Each xCell In rng
        Set FoundRange = Nothing
        Set FoundRange = xlRng.Find(what:=xCell.Value2)

        If Not FoundRange Is Nothing Then
            FoundRange.EntireRow.Font.Bold = True
        End If

    Next xCell

End Sub

谢谢你的快速反应。目前,我的代码完全不起任何作用。如果他的数据从另一列开始,则代码将失败。excel的速度足够快,可以在不到一秒钟的时间内搜索整个工作表,还可以将范围更改为
“a:XFD”
@Banana。是的,它会,但是OP的原始代码使用了这个范围。他们可能也不想搜索整个范围。@BigBen-有很多方法可以编写一些东西,但是我同意你关于
整数
在VBA中几乎毫无意义)。此外,行中不需要
。汤姆,我们已经更新了一个漂亮而优雅的解决方案。非常感谢:)@香蕉谢谢你的小费。这是很有用的,因为我在每张纸上的不同列中都有数据
Sub MacroText()
    Dim xlRng As Range
    Dim rng As Range
    Dim xlSht As Worksheet
    Dim sht As Worksheet
    Dim iLastRow As Long
    Dim iRow As Long
    Dim bFound As Boolean
    Dim xCell As Range
    Dim xlCell As Range
    Dim valueToFind As String
    Dim FoundRange As Range

    bFound = False
    Set sht = ActiveWorkbook.Worksheets("Sheet3")
    Set xlSht = ActiveWorkbook.Worksheets("Sheet2")
    Set rng = Selection
    Set xlRng = ActiveWorkbook.Worksheets("Sheet2").Range("A:A")

    iLastRow = xlSht.Range("A1").End(xlDown).Row

    Set xlRng = xlSht.Range("A1:A" & iLastRow)

    For Each xCell In rng
        Set FoundRange = Nothing
        Set FoundRange = xlRng.Find(what:=xCell.Value2)

        If Not FoundRange Is Nothing Then
            FoundRange.EntireRow.Font.Bold = True
        End If

    Next xCell

End Sub