【问题标题】:Using Range.Find in For Loop - Not Returning a Range Excel VBA在 For 循环中使用 Range.Find - 不返回范围 Excel VBA
【发布时间】:2019-12-23 01:46:32
【问题描述】:

我正在循环遍历作为字符串列表的特定范围的数据,并尝试在另一个工作簿的另一个范围中找到该字符串。然后我想将相邻数据从第一个范围复制到第二个范围中的正确行。

我从 range.find 中得到“Nothing”作为范围返回。我不确定我是否正确使用它,但经过几个小时的调试后,我无法找出原因。

我尝试一次调试和运行我的循环,但一切都返回为“无”。我检查了两个范围内的所有拼写,并且两个范围都包含参数。

For i = 1 To ptDataLastRow - ptDataFirstRow - 1
        ptString = Workbooks(JDEWkbk).Worksheets(1).Cells(ptDataFirstRow + i, PTColNo).Value2
        Workbooks(scrapWkbk).Worksheets(runMonth).Activate
        Set defectRow = Workbooks(scrapWkbk).Worksheets(runMonth).Range("A1, A" & scrapLastRow).Find(what:=ptString)
Next

【问题讨论】:

  • 我的错误似乎在Set defectRow = 行。感谢您的帮助!

标签: vba for-loop find range


【解决方案1】:
Range("A1, A" & scrapLastRow)

...只是两个单元格。

应该是

Range("A1:A" & scrapLastRow)

【讨论】:

  • 哦,我的话,我有一个多小时没看到。谢谢你。 :)
  • 有没有办法将数据存储为(行,列)?
  • 存储什么数据?
  • 对不起,我的意思是存储范围。但我意识到我可以使用range.rowrange.column
【解决方案2】:

这是用 2 个单元格定义范围的可能方法 - 左上和右下:

With Workbooks(scrapWkbk).Worksheets(runMonth)
    Set defectRow = .Range(.Cells(1, "A"), .Cells(scrapLastRow, "A")).Find(what:=ptString)
End With

或者您可以使用Range("A1:A" & scrapLastRow),但前一个提供了更多的灵活性。

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多