Board logo

標題: 2 個 ON ERROR GOTO ERROR 出現錯誤 [打印本頁]

作者: mdr0465    時間: 2020-10-3 17:50     標題: 2 個 ON ERROR GOTO ERROR 出現錯誤

本帖最後由 mdr0465 於 2020-10-3 17:52 編輯

各位大大你好

我在"L"欄的儲存格, 用VLOOKUP在 "2019 SOC NO."  里E 的資料搜尋"成本"的D欄, 但如果成本沒有就會在"期貨" 如果再沒有找到就會顯示空格,

如成功找到配對就會在"K"欄註明在那一個活薄頁找到配對

但我用2 個 ON ERROR GOTO ERROR1  ,ON ERROR GOTO ERROR 2, 就會出現問題

請各位幫忙看看我那里出錯, 謝謝

如表達得唔好,請見諒
作者: ikboy    時間: 2020-10-5 17:19

個人建議應盡可能不使用 On Error..
  1. Sub crosscheck_new_item()
  2. Application.Calculation = xlCalculationManual
  3. Dim i As Long
  4. On Error Resume Next
  5. Worksheets("2019 TRADING SOC NO.").Select
  6. If Err Then Err.Clear: GoTo error1
  7. For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
  8.     Worksheets("2019 TRADING SOC NO.").Range("L" & i).Value = WorksheetFunction.VLookup(Worksheets("2019 TRADING SOC NO.").Range("E" & i).Value, Worksheets("成本 (2020.09.28)").Range("D:AL"), 35, 0)
  9.     Worksheets("2019 TRADING SOC NO.").Range("M" & i).Value = "成本表"
  10.     Next

  11. error1:
  12.     Worksheets("2019 TRADING SOC NO.").Range("L" & i).Value = WorksheetFunction.VLookup(Worksheets("2019 TRADING SOC NO.").Range("E" & i).Value, Worksheets("期貨總匯 (2020.09.16)").Range("A:G"), 7, 0)
  13.     If Err Then Err.Clear: GoTo error2
  14.     Worksheets("2019 TRADING SOC NO.").Range("M" & i).Value = "期貨表"
  15.    
  16. error2:
  17.     Worksheets("2019 TRADING SOC NO.").Range("L" & i).Value = ""
  18.     If Err Then MsgBox "Error has found"

  19. Application.Calculation = xlCalculationAutomatic
  20. End Sub
複製代碼

作者: mdr0465    時間: 2020-10-5 19:03

回復 2# ikboy

IKBOY 謝謝你的回覆,
但當中VLOOKUP 是有配對成功的, 但是公式是沒有跳到07,08,09段的公式, 請問我應如何修改呢??

謝謝幫忙
作者: ikboy    時間: 2020-10-6 09:01

首先你的程式碼 Worksheets("2019 TRADING SOC NO.") 跟本不存在
On Error Resume Next...功能是讓程式不理會錯誤繼續跑下去, On Error Goto ..跑到指定行繼續跑
  1. Sub crosscheck_new_item()
  2. Application.Calculation = xlCalculationManual
  3. Dim i As Long, d As Object
  4. Set d = CreateObject("scripting.dictionary")
  5. For Each s In Sheets
  6.     d(s) = "" '創建字典收氣所有頁名
  7. Next
  8. If Not d.exists("2019 TRADING SOC NO.") Then GoTo error1    '如果頁名"2019 TRADING SOC NO."不存在跑到指定行繼續跑

  9. 'On Error GoTo error1
  10. Worksheets("2019 TRADING SOC NO.").Select
  11. For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
  12.     Worksheets("2019 TRADING SOC NO.").Range("L" & i).Value = WorksheetFunction.VLookup(Worksheets("2019 TRADING SOC NO.").Range("E" & i).Value, Worksheets("成本 (2020.09.28)").Range("D:AL"), 35, 0)
  13.     Worksheets("2019 TRADING SOC NO.").Range("M" & i).Value = "成本表"
  14.     Next
  15. error1:
  16. If Not d.exists("2019 TRADING SOC NO.") Then GoTo error2
  17. 'On Error GoTo error2
  18.     Worksheets("2019 TRADING SOC NO.").Range("L" & i).Value = WorksheetFunction.VLookup(Worksheets("2019 TRADING SOC NO.").Range("E" & i).Value, Worksheets("期貨總匯 (2020.09.16)").Range("A:G"), 7, 0)
  19.     Worksheets("2019 TRADING SOC NO.").Range("M" & i).Value = "期貨表"
  20. error2:
  21.     If Not d.exists("2019 TRADING SOC NO.") Then GoTo 1000
  22.     Worksheets("2019 TRADING SOC NO.").Range("L" & i).Value = ""
  23. 1000
  24. Application.Calculation = xlCalculationAutomatic
  25. End Sub
複製代碼

作者: mdr0465    時間: 2020-10-6 10:07

回復 4# ikboy

Ikboy
謝謝你的回覆,
作者: mdr0465    時間: 2020-10-7 09:38

回復 5# mdr0465

軒云熊師兄,

請查閱,謝謝幫忙

謝謝
作者: 准提部林    時間: 2020-10-9 10:06

檔案無法開, 大約抓一下
Sub TEST_A01()
Dim Sht As Worksheet, S1, S2, TC, M(2)
On Error Resume Next
Set Sht = Sheets("2019 TRADING SOC NO.")
If Sht Is Nothing Then MsgBox "工作表〔2019 TRADING SOC NO.〕不存在!  ": Exit Sub
On Error GoTo 0
'------------------------------
For i = 2 To Sht.Range("A" & Rows.Count).End(xlUp).Row
    S1 = "":  S2 = "":  TC = Sht.Range("E" & i).Value
    On Error Resume Next
    M(1) = Application.VLookup(TC, Sheets("成本 (2020.09.28)").Range("D:AL"), 35, 0)
    M(2) = Application.VLookup(TC, Sheets("期貨總匯 (2020.09.16)").Range("A:G"), 7, 0)
    On Error GoTo 0
    For j = 1 To 2
        If Not IsError(M(j)) Then S1 = M(j): S2 = Array("成本表", "期貨表")(j - 1): Exit For
    Next j
    Sht.Range("L" & i) = S1
    Sht.Range("M" & i) = S2
Next i
End Sub


'===============================
作者: 軒云熊    時間: 2020-10-9 23:29

回復 6# mdr0465

不知道 是不是你要的  我有把準大寫的 放上去 如果不是 請告訴我問題出在哪裡 謝謝 我也是順便練習

javascript:;
作者: 軒云熊    時間: 2020-10-10 00:30

本帖最後由 軒云熊 於 2020-10-10 00:37 編輯

回復 6# mdr0465
我把位置改了一下 因為 結果跟準大的不一樣 所以改了一下 你再看看吧


javascript:;
作者: mdr0465    時間: 2020-10-10 10:42

回復 7# 准提部林

准提部林版主
這就是我想要的表達方式
萬分感謝你的幫忙
   
謝謝
作者: mdr0465    時間: 2020-10-10 10:44

回復 10# mdr0465


軒云熊師兄

謝謝你詳細的版本給我想要的表達方式

萬分感謝你的幫忙
   
謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)