查找下一個問題堆棧溢出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