【发布时间】:2021-01-09 03:58:04
【问题描述】:
我是 VBA 的新手,我正在尝试创建一个宏,通过 C 列搜索找到包含“teston”的所有单元格,然后找到它下方包含“testoff”的单元格并突出显示它们之间的所有单元格在它旁边的列中。有多个 teston 实例要测试。
此代码有效,但仅突出显示 teston 到 testoff 的第一个实例
Dim findrow As Long, findrow2 As Long
On Error GoTo errhandler
findrow = Range("C:C").Find("teston", Range("C1")).Row
findrow2 = Range("C:C").Find("testoff", Range("C" & findrow)).Row
Range("F" & findrow + 1 & ":F" & findrow2 - 1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 16764159
.TintAndShade = 0
.PatternTintAndShade = 0
End With
errhandler:
MsgBox "No Cells containing specified text found"
这是我试图做的,以突出它们,但它没有突出任何东西
Range("A1").Select
Selection.End(xlDown).Select
Dim lastcell As Long
lastcell = ActiveCell.Row
Dim findrow As Long, findrow2 As Long, I As Long, inext As Long
inext = 1
On Error GoTo errhandler
Do While I < lastcell
findrow = Range("C" & inext & ":" & "C" & lastcell).Find("test1", Range("C1")).Row
findrow2 = Range("C" & inext & ":" & "C" & lastcell).Find("test2", Range("C" & findrow)).Row
Range("F" & findrow + 1 & ":F" & findrow2 - 1).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 16764159
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("findrow2").Select
inext = ActiveCell.Row
findrow = findrow2
I = I + 1
Loop
errhandler:
MsgBox "No Cells containing specified text found"
【问题讨论】:
-
如果 C 列包含多个 testons 而只有一个 testoff,您的宏应该填充什么范围?
-
我没有马上注意到这条线 -
Range("findrow2").Select。它能做什么?更准确地说,你认为它应该做什么? -
我的意思是,无论命名范围“findrow2”是什么,
inext总是指向这一行并且不会在循环中移动 - 所以你只绘制第一个test1/test2对。而且这个命名范围必须存在,否则你会去errhandler:或者你真的要去那里? -
我试图通过选择 findrow2 来获取单元格行 Range("findrow2").Select ` 然后获取单元格值并将其设置为
inext以便下一个循环从 @987654328 开始@ 并从那里往下走 -
啊,也许你想写
inext = Range("C" & findrow2).Row或者简单的inext = findrow2?