.Findnext不遵守范围设置

时间:2018-07-03 08:41:00

标签: excel vba excel-vba find next

在我的代码中,我使用两个const script = document.createElement('script'); script.innerHTML = ` const originalAlert = window.alert; window.alert = (msg) => { originalAlert(msg === 'hello' ? 'bye' : msg); }; `; document.body.appendChild(script); 实例,并结合一个.Find。众所周知,这容易出错,但我也不例外。但是,这是我能想到的最好的方法。下面的代码,我剥离了最不相关的内容。

问题是存在重复的值,我想两个都保留,所以我决定使用.FindNext,如果重复,请使用:

.Findnext

这里的问题是If newqst = refqst Then Set newqstadrs = Findrange.FindNext(after:=lstqstadrs) Else 不尊重它应该在.FindNext上继续,而是继续在这里使用的Findrange.Find上:

FindRangeTwo.Find

完整代码:

newrowtwo = FindRangeTwo.Find(rCell.Value, LookIn:=xlValues, lookat:=xlWhole).row

1 个答案:

答案 0 :(得分:2)

您只能有一对“查找/查找下一个”对。第二个优先于第一个。您需要替代方法FindRangeTwo。鉴于FindRangeTwo是单个列(gewaskolom),并且您正在寻找该行,所以application.match应该做得很好。

这样的事情,

dim newrowtwo as variant   '<~~ should be variant type for IsError to catch

...
newrowtwo = application.match(rCell.Value, FindRangeTwo, 0)
if not iserror(newrowtwo) then
    ...
end if
...

请注意,application.match返回的是FindRangeTwo内的位置,而不是工作表上的行。工作表上的实际行将是(newrowtwo + newrow-1)。