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