標題:
除了使用on error resume next, 如何不顯示錯誤
[打印本頁]
作者:
enoch
時間:
2012-7-3 09:54
標題:
按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
複製代碼
作者:
enoch
時間:
2012-7-3 11:58
標題:
除了使用on error resume next, 如何不顯示錯誤
在Excel公式, 可以在Vlookup前面加上ISNA , 避免找不到資料時出現ERROR
若果在VBA, 除了使用 on error resume next
如何避免當使用Application.WorksheetFunction.VLookup 找不到資料時出現錯誤
作者:
oobird
時間:
2012-7-3 13:27
VBA有VBA查詢的方法,效果也比調用工作表函數強多了
自然也沒有調用工作表函數查詢出錯的缺點。
作者:
GBKEE
時間:
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
複製代碼
作者:
enoch
時間:
2012-7-3 17:40
請問GBKEE
請問用Excel function時, 何時決定要否加WorksheetFunction呢?
兩者只在於WorksheetFunction 會回應執行上的錯誤嗎?
作者:
GBKEE
時間:
2012-7-4 16:08
回復
5#
enoch
Application.VLookup 等同 Application.WorksheetFunction.VLookup
差別在函數傳回錯誤值時, 前者不加WorksheetFunction, vba不會產生程式上的錯誤值
作者:
enoch
時間:
2012-7-5 14:23
明白了, 謝謝GBKEE
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)