Knotweed 發問時間: 電腦與網際網路軟體 · 8 年前

Excel-VBA-從另外一個sheet多筆資料找出下一筆

Excel中有兩個sheet, 一個輸入輸出, 另一個為儲存.

由統一的編碼帶出其右端的所屬資料

但在儲存sheet中, 同一個編碼可能有多筆資料...

在輸入輸出頁我有設"找尋下一筆"

但確只能找到第二筆...無法帶出第三筆之後的筆數...

請問是那裡出錯了呢?

http://webhd.xuite.net/_oops/keepfree/4he

此檔案密碼為s58512038

已更新項目:

准大您好~~

我試過了檔案, 很好用喔~

麻煩請放上回答...好把您選為最佳答案 : ) 謝謝!!!!

1 個解答

評分
  • 8 年前
    最佳解答

    <範例檔>測試看看:

    http://www.funp.net/652435

    2012-08-16 18:04:40 補充:

    EXCEL VBA.依查詢〔編號〕將資料載入〔輸入表〕並可〔上下筆〕輪動

                             <.准提部林.>

    ---------------------------------

    範例檔簡介: 

    ■程式碼:以下為〔第2版〕內容

     Dim MyRng As Range, FindVal$

     '↑加入〔頂端〕宣告變數  

     '============================  

     Sub 搜尋_第一筆()

     If [D4] = "" Then MsgBox "未輸入〔病歷號〕!": Exit Sub

     FindVal = [D4]: [P4] = ""

     Set MyRng = [資料表!B:B].Find(FindVal, Lookat:=xlWhole)

     If MyRng Is Nothing Then MsgBox "該編號未登錄過!": Exit Sub

     [P4] = "=COUNTIF(資料表!B3:B" & MyRng.Row & ",D4)"

     [P4] = [P4].Value

     Call 搜尋_載入資料

     End Sub

     '============================  

     Sub 搜尋_下一筆()

     If [D4] = "" Then MsgBox "未輸入〔病歷號〕!": Exit Sub

     If MyRng Is Nothing Or FindVal <> [D4] Then

       Set MyRng = Sheets("資料表").[B3]

       FindVal = [D4]

     End If

     [P4] = ""

     Set MyRng = [資料表!B:B].Find(FindVal, after:=MyRng, SearchDirection:=xlNext)

     If MyRng Is Nothing Then MsgBox "該編號未登錄過!": Exit Sub

     [P4] = "=COUNTIF(資料表!B3:B" & MyRng.Row & ",D4)"

     [P4] = [P4].Value

     Call 搜尋_載入資料

     End Sub

     '============================   

     Sub 搜尋_上一筆()

     If [D4] = "" Then MsgBox "未輸入〔病歷號〕!": Exit Sub

     If MyRng Is Nothing Or FindVal <> [D4] Then

       Set MyRng = Sheets("資料表").[B65536]

       FindVal = [D4]

     End If

     [P4] = ""

     Set MyRng = [資料表!B:B].Find(FindVal, after:=MyRng, SearchDirection:=xlPrevious)

     If MyRng Is Nothing Then MsgBox "該編號未登錄過!": Exit Sub

     [P4] = "=COUNTIF(資料表!B3:B" & MyRng.Row & ",D4)"

     [P4] = [P4].Value

     Call 搜尋_載入資料

     End Sub

     

    ■說明:第2版新功能

     1.搜尋時可〔上.下筆〕一直循環。

     2.在儲存格〔P4〕會顯示目前是〔第?筆〕。

     3.每次〔新查詢〕輸入編號後,按〔上一筆〕即可查到〔最後一筆〕,

       以利叫出〔最新〕的一筆資料。

    ---------------------------------

    <範例檔>第1版:

    http://www.funp.net/652435

    <範例檔>第2版:

    http://www.funp.net/233826

    ---------------------------------

    2012-08-16 20:29:45 補充:

    <範例檔>第2版之修整版,減少重覆指令:

    http://www.funp.net/807525

    ---------------------------------

    2012-08-16 20:32:04 補充:

    <範例檔>第2版之修整版,減少重覆指令:

    http://www.funp.net/807525

    程式可減少如下例:

    Sub 搜尋()

    Set MyRng = Sheets("資料表").[B3]

    uType = xlNext

    Call 搜尋_載入資料

    End Sub

還有問題?馬上發問,尋求解答。