查找下一个问题堆栈溢出Excel查找下一个功能
我有什么变成一个长的VBA脚本。其目的是让用户输入全部或部分姓氏和名字,然后编辑记录。问题是数据可能有重复的搜索关键字。例如,John Smith的密钥ID是SmithJohn。假设表中还有一个Ray Smith(ID = SmithRay)。如果用户搜索史密斯,约翰史密斯将得到击中。如果用户真的想要Ray Smith,我已经给他们一个按钮来转到我的三页表单的下一页并再次搜索。我一直在尝试使用FindNext(),如http://msdn.microsoft.com/en-us/library/office/aa195732(v=office.11).aspx中所述 - 它不起作用。
我的脚本创建了一些全局变量。包括这些:
Dim cPersonID As String
Dim lRow As Long
Dim lPart As Long
Dim nLastRow As Long, i As Long
Dim strSearch As String
Dim aCell As Range , bCell As Range
Dim ws As Worksheet
继续我的例子,用户在姓氏文本框中键入Smith。因此,cPerson ID将具有值“Smith”lRow将具有此记录的行号,nLastRow将具有最后一个非空行的值。我的搜索表达式(在程序btnNameFindP1_Click())看起来是这样的:
Set aCell = ws.Range("A1:A" & nLastRow).Find(What:=strSearch, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
的原因,我不明白,aCell结束了包含搜索字符串的全部价值(在这种情况下SmithJohn)。 strSearch也以该值结束。但cPersonID只包含搜索字符串(Smith)。我可以忍受这一点。
如果用户单击按钮搜索下一个匹配字段,脚本会将焦点转移到Page2并尝试搜索下一个匹配项。这里的脚本:
Private Sub btnNameFindNextP1_Click()
frmLWVdataEditFindTwoPage.Value = 1
Set ws = Worksheets("8_4MemDB_NHS")
'Find next matching member in table
Set aCell = ws.Range("A1:A" & nLastRow).FindNext()
我已经尝试了很多变种的FindNext()。我怀疑我可能没有处理多屏幕表单的Page1和Page2之间的转换。但在这一点上,我会尝试任何建议。经过三个小时的反复试验,我已经没有想法了。
谢谢, 托尼利马
range.FindNext()neturns匹配条件的第一个单元格。如果你想得到下一个结果,你应该指定findnext的参数,它指定了要搜索的位置。 – 2014-09-05 02:48:28
@Tony Lima你还在吗我会帮你的 – Dmcovey1993 2014-09-05 02:53:24