根据单元格值查找行,然后根据找到的行值复制粘贴 - 未设置对象变量

finding row based off cell value and then copying paste based on the found row value - object variable not set

我仍然是 VBA 的新手,所以任何建议都将不胜感激...

我正在尝试将范围从具有特定名称的多个工作表复制到同一工作簿中的一个工作表。范围是动态的,因为我知道范围从哪一列开始和结束,但我不知道它将从哪一行开始和结束。我已经确定了粘贴目标,但我需要帮助找到范围应该从哪一行开始。我要复制的范围应该在单元格值 =“Open Items:”的行之后开始(即如果单元格 =“Open Items:”的行是 3,那么我希望我的范围从 C4 开始)

我的 .Find 公式有问题,它没有返回任何内容。我确信我正在搜索“未清项:”的范围确实有一个等于该范围的单元格。请参阅下面的代码:

Dim ws As Worksheet
Dim targetws As Worksheet
Dim FindRow As Range
Dim openitemrow As Long

Set targetws = Sheets("targetwsname")

'loop through each ws

For Each ws In ActiveWorkbook.Worksheets

'sets ws name constraint and then tries to find the starting row in the range
If ws.Name Like "*" & "Open" & "*" Then
     Set FindRow = ws.Range("C:C").Find("Open Items:", lookin:=xlValues, lookat:=xlWhole)
     openitemrow = FindRow.Row
'there needs to be values in c4 for me to copy data over but the data i need to copy is in a different location
          If Not IsEmpty(ws.Cells(4, "C")) Then
               ws.Range("C:F" & openitemrow).End(xlUp).Offset(1).Copy Destination:=targetws.Range("D" & Rows.Count).End(xlUp).Offset(1)

          End If
    End If
next ws 

如果相关单元格的整个单元格值为“Open Items:”并且该单元格总是在同一列中,那么您可以使用匹配,这已经return它作为一个数字

openitemrow = Application.Match("Open Items:", ws.Range("C:C"), 0)