从另一个工作表中查找值(循环中的循环)

Finding values from another worksheet (a loop in a loop)

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

脚本必须在 Sheet3 的选定区域中逐个单元格。每个单元格包含一个数字或为空白。 该脚本将搜索 Sheet2 上特定范围内每个单元格的值。当它找到一些东西时,它所在的整行的内容必须是 bold. 如果它什么也没找到,它将继续到下一个单元格。

在此处浏览 Whosebug 和不同的指南后,我设法编写了一个脚本。它没有错误,但它什么也没做。


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



 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
    valueToFind = xCell.Value

    For Each xlCell In xlRng
        Worksheets("Sheet2").Activate
        If xlCell.Value = valueToFind Then
            bFound = True
            iRow = xlCell.Row
            Rows(iRow).Font.Bold = True
            End If


            If bFound = True Then Exit For
            End
    Next xlCell

Next xCell

End Sub

我假设它必须是在代码中定位的东西,但我找不到任何相关信息。 在为此工作了 12 个小时之后,我将非常感谢您的帮助。

干杯!

For Each xlCell In xlRng
    Worksheets("Sheet2").Activate
        If xlCell.Value = valueToFind Then
            xlCell.EntireRow.Font.Bold = True
        End If
Next xlCell  

我不知道你没有得到什么,但我假设你没有得到所需的粗体行。将上面的代码替换为您的 for 循环和 运行。 我没有测试过,但不确定是否有效。

您可以使用 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