除了使用on error resume next, 如何不顯示錯誤
- 帖子
- 176
- 主題
- 98
- 精華
- 0
- 積分
- 279
- 點名
- 0
- 作業系統
- window 7
- 軟體版本
- office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-2-17
- 最後登錄
- 2020-4-8
|
按ENTER 向下影響activecell 位置
本帖最後由 enoch 於 2012-7-3 10:13 編輯
程式用作在第2欄輸入資料後, 會比對資料是否能在資料庫找到,
若找到會在第4欄顯示找到資料, 若不存在會顯示"找不到", 及發出聲音
若 excel 設定了按enter鍵後, 儲存格向下,
當程式在第3行輸入資料按enter後, 因為儲存格已去了第4行,
程式會錯誤處理第4行資料
請問應如何修改, 避免程式認錯activecell
另外當使用檔案內的名稱範圍"data", 前面是否一定需要加上所在工作表"information"
請指教- Private Sub Worksheet_Change(ByVal Target As Range)
- On Error GoTo errhandler
- Dim row As Integer
- row = ActiveCell.row
- If Target.Column <> 2 Then Exit Sub
- If Cells(row, "A") <> "" Then
- Cells(row, "D") = Application.WorksheetFunction.VLookup(Cells(row, "B"), Sheets("Information").Range("data"), 1, False)
- End If
- Exit Sub
- errhandler:
- Call Beep
- Cells(row, "D") = "找不到"
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 176
- 主題
- 98
- 精華
- 0
- 積分
- 279
- 點名
- 0
- 作業系統
- window 7
- 軟體版本
- office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-2-17
- 最後登錄
- 2020-4-8
|
2#
倒序看帖
發表於 2012-7-3 11:58
| 只看該作者
除了使用on error resume next, 如何不顯示錯誤
在Excel公式, 可以在Vlookup前面加上ISNA , 避免找不到資料時出現ERROR
若果在VBA, 除了使用 on error resume next
如何避免當使用Application.WorksheetFunction.VLookup 找不到資料時出現錯誤 |
|
|
|
|
|
|
- 帖子
- 1572
- 主題
- 16
- 精華
- 2
- 積分
- 1521
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- office 2003
- 閱讀權限
- 150
- 性別
- 男
- 註冊時間
- 2010-5-1
- 最後登錄
- 2016-1-13

|
3#
發表於 2012-7-3 13:27
| 只看該作者
VBA有VBA查詢的方法,效果也比調用工作表函數強多了
自然也沒有調用工作表函數查詢出錯的缺點。 |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
4#
發表於 2012-7-3 14:29
| 只看該作者
本帖最後由 GBKEE 於 2012-7-3 15:03 編輯
回復 1# 2# enoch - Option Explicit
- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim xlrow As Integer, xlLook As Variant
- If Target.Column <> 2 Then Exit Sub
- xlrow = Target.Row
- If Cells(xlrow, "A") <> "" Then
- 'xlLook = Application.WorksheetFunction.VLookup(Cells(xlrow, "B"), [data], 1, False)
- '使用工作表函數 Application.WorksheetFunction 如傳回錯誤值 系統會回應執行上的錯誤中段程式
- xlLook = Application.VLookup(Cells(xlrow, "B"), [data], 1, False)
- '但不加上WorksheetFunction 如傳回錯誤值 系統不會回應執行上的錯誤
- '但變數型態 需設為 Variant
- Cells(xlrow, "D") = IIf(Not IsError(xlLook), xlLook, "找不到")
- End If
- End Sub
複製代碼 |
|
|
|
|
|
|
- 帖子
- 176
- 主題
- 98
- 精華
- 0
- 積分
- 279
- 點名
- 0
- 作業系統
- window 7
- 軟體版本
- office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-2-17
- 最後登錄
- 2020-4-8
|
5#
發表於 2012-7-3 17:40
| 只看該作者
請問GBKEE
請問用Excel function時, 何時決定要否加WorksheetFunction呢?
兩者只在於WorksheetFunction 會回應執行上的錯誤嗎? |
|
|
|
|
|
|
- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
6#
發表於 2012-7-4 16:08
| 只看該作者
回復 5# enoch
Application.VLookup 等同 Application.WorksheetFunction.VLookup
差別在函數傳回錯誤值時, 前者不加WorksheetFunction, vba不會產生程式上的錯誤值 |
|
|
|
|
|
|
- 帖子
- 176
- 主題
- 98
- 精華
- 0
- 積分
- 279
- 點名
- 0
- 作業系統
- window 7
- 軟體版本
- office 2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2011-2-17
- 最後登錄
- 2020-4-8
|
7#
發表於 2012-7-5 14:23
| 只看該作者
|
|
|
|
|
|