iT邦幫忙

0

VBA 下一筆資料的查詢

savedRowIdx = 2
For i = savedRowIdx To Sheets("異動檔").Range("C2").End(xlDown).Row
If data1.Text = Cells(i, "C") Then
savedRowIdx = i + 1
T1.Text = Cells(i, "D")
T2.Text = Cells(i, "B")
T3.Text = Cells(i, "E")
Else
For j = 2 To Sheets("異動檔").Range("C2").End(xlDown).Row
If data1.Text = Cells(j, "C") Then
T1.Text = Cells(j, "D")
T2.Text = Cells(j, "B")
T3.Text = Cells(j, "E")
End If
Next
End If
Next

我碰到2個問題 不知道怎麼修改
第一個問題
我按下一筆資料的按鈕 卻跑到第三筆資料
第二個問題
我else應該可以有2個作用才對
第1個作用是若資料只有一筆 它就停在那筆資料
第2個作用是若資料是最後一筆 它就會回到第一筆資料
但是卻卡住了
我不知這樣寫 哪裡錯誤 請多指教
謝謝

2 個回答

0
賽門
iT邦超人 1 級 ‧ 2019-03-17 16:02:07

學一下VBA的Debug方法自己先Debug程式看看能不能自行修訂程式。
一個不會自行偵錯的程式設計師是沒有用處的。

0
eva09qq
iT邦新手 5 級 ‧ 2019-03-19 16:55:45

在程式碼中間 按下F8 看看那一行的程式碼的動作 不如您預期的
一行一行解決~~

剛無聊 幫你 弄了一下 你看一下
大約能 跑出你要的功能,但實際還是得測試
因為沒有看到 你的TABLE是長怎樣的
其本上 第二個 FOR是多餘的

Sub 按鈕2_Click()
savedRowIdx = 2
GG = Sheets("異動檔").Range("C2").End(xlDown).Row
Data1 = 2
T1 = ""
T2 = ""
T3 = ""
For i = savedRowIdx To GG

If Cells(i, 3) = Data1 Then
    savedRowIdx = i + 1
    T1 = Cells(i, 4)
    T2 = Cells(i, 2)
    T3 = Cells(i, 5)
Else
    For j = 2 To GG
        If Cells(i, 3) = Data1 Then
        T1 = Cells(j, 4)
        T2 = Cells(j, 2)
        T3 = Cells(j, 5)
        End If
    Next
End If

Next
End Sub

我的 測試 TABLE
https://ithelp.ithome.com.tw/upload/images/20190319/20108656PdN9jMaKbA.png

我要發表回答

立即登入回答