我正在尝试创建一个宏,它将搜索A列以查找"奖励:"。我希望这个存储,以便我以后可以在复制粘贴功能中使用该行。每个奖励实例之间都有空单元格:当我为任一行变量使用消息框时,我返回0 这就是我到目前为止所拥有的
Dim StartReport As Range
Dim EndReport As Range
Dim StartRow As Integer
Dim EndRow As Integer
Set StartReport = Worksheets("Grant Expense").Range("A:A").Find("Award:", LookAt:=xlPart)
Set EndReport = Worksheets("Grant Expense").Range("C:C").Find("Total Costs", LookAt:=xlPart)
StartRow = StartReport.Row
EndRow = EndReport.Row
Range(Cells(1, StartRow), Cells(17, EndRow)).Select
答案 0 :(得分:0)
由于某种原因,Find函数有时会返回任何内容,如果这是单元格中唯一的文本。 确保所有过滤器均已关闭,因此您可以添加:
If Worksheets("Grant Expense").AutoFilterMode Then
Worksheets("Grant Expense").ShowAllData
End If
但我认为你可能混淆了细胞。它是第一行,然后是列,所以:
Range(Cells(StartRow, 1), Cells(EndRow, 17)).Select
我找到了解决方案,我不知道为什么,但这可以正常工作:
Set StartRow = (Worksheets("Grant Expense").Range("A:C").Find("Award:"))
Set endrow = (Worksheets("Grant Expense").Range("C:D").Find("Total Costs"))
然而。查找将在范围中最左边的单元格后开始,这意味着您的第一个奖项不是开始。要解决此问题,请在工作簿中插入另一行。并记住使用正确的范围:
Range(Cells(StartRow, 1), Cells(EndRow, 17)).Select
答案 1 :(得分:0)
"Award:"
更改为What:="Award:"
为了使其绝对万无一失,您可以使用以下命令更改整个find命令:
.Find(What:="Award:", After:=Sheets("Grant Expense").Range("A1"), LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
然后您可以使用.FindNext
查找下一次出现。