如何循环Range.Find在VBA中?

我是VBA新手,所以请不要太苛刻。 话虽如此,我的问题Range.Find

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

我想通过使用Range.Find应该有一种方法使它更加dynamic。 我已经设法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 

如果你想循环search参数的所有实例,这里是你的代码的更正

 Function picRng() As Range Set picRng = ActiveSheet.Range("A1:Z1000") Set rngfindvalue = picRng.Find(what:="http", Lookat:=xlPart) If Not rngfindvalue Is Nothing Then rngFirstAddress = rngfindvalue.Address Do MsgBox rngfindvalue.Address Set rngfindvalue = picRng.FindNext(rngfindvalue) Loop Until rngfindvalue Is Nothing Or rngfindvalue.Address = rngFirstAddress End If End Function 
  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 

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