如何在VBA中循环Range.Find?

时间:2017-09-14 09:52:31

标签: excel vba excel-vba loops

我是VBA的新手所以请不要过于苛刻。以下是我Range.Find的问题。

我有一个交叉表,其中一列有“https”链接到图片;我有一个工作的VBA将这些链接转换为该列的每个单元格中的实际图片。但是,我的问题是当我在交叉表中添加另一列或移动列时,我的VBA停止工作,我最终得到的链接没有实际图片(因为,图片代码设置为我的链接所在的初始列)。

我认为应该有一种方法可以通过Range.Find使其更具动态性。我已设法找到有关Range.Find的信息,但我的代码无效。无论如何有人可以帮忙吗?

以下是代码:

Function picRng() As Range
    Set picRng = ActiveSheet.Range("A1:Z1000")
    Set rngFindValue = ActiveSheet.Range("A1:Z1000").Find(what:="http", Lookat:=xlPart)
    Do
      Set rngFindValue = Search.FindNext(rngFindValue)
    Loop While Not rngFindValue is Nothing
End Function

3 个答案:

答案 0 :(得分:2)

如果你想循环遍历搜索参数的所有实例,那就是修改你的代码

numpy.zeros_like()

答案 1 :(得分:0)

您不需要Find()的循环。如果您需要Find()中的最后一个值,则需要在参数(searchDirection)中引用它。这样的内容将给出最后一个值:

Public Function LocateFind() As Range

    Dim rngCell             As Range
    Dim rngRangeToLookAt    As Range

    Set rngRangeToLookAt = Range("A1:A100")
    Set LocateFind = rngRangeToLookAt.Find("YourValueHere", searchdirection:=xlPrevious)

End Function

答案 2 :(得分:0)

            Set lx_rangeFind = ActiveSheet.UsedRange.Find(What:=strToFind, LookIn:=xlValues, LookAt:=xlPart)
            Set lx_rangeFindFirst = lx_rangeFind
            Do
               Set lx_rangeFind = ActiveSheet.UsedRange.Find(What:=strToFind, LookIn:=xlValues, LookAt:=xlPart, After:=lx_rangeFind)
               'Rest of the code
               'now lx_rangeFind has the cell Number
            Loop While lx_rangeFindFirst.Address <> lx_rangeFind.Address