在我的Main
過程中,我想寫一個快速的if語句來檢查用戶是否提供了有效的輸入(用戶從數據列表中選擇項目數量,請參閱附加的截圖)。爲此,我正在檢查項目編號是否不屬於項目列表的一部分。如果這是真的,則顯示錯誤消息;如果不是,那麼調用其他一些程序。VBA application.match錯誤2015
由於某些原因,雖然我在運行時遇到了錯誤2015,這意味着即使在正確的用戶條目中if語句始終爲真。有人能幫我理解錯誤嗎?
- 該項目號碼輸入是稱爲「IdSelect」命名的細胞,並在一個被稱爲「發票」
- 針對此輸入檢查是在一個被稱爲「輸入」
- 片材中的數據表數據存儲在B列,被稱爲「ProjectList」
下面的代碼(注:我曾嘗試將其粘貼5次,但格式仍然無法工作這段時間由於某種原因 - 任何想法,可能是什麼?該代碼格式正確。對不起,顯示混亂;如果有人可以告訴我什麼問題mig HT我將不勝感激)從「輸入」表
Sub Main()
'Turn off screen updating
Application.ScreenUpdating = False
'Define variable for currently active cell to reactivate it afterwards
Dim OldActiveSheet As Object
Dim OldActiveCell As Object
Dim i As Integer
Dim ProjectList As Range
Set OldActiveSheet = ActiveSheet
Set OldActiveCell = ActiveCell
'If-statement to check whether project number is valid or not
Worksheets("Invoice").Activate
'Print to Immediate Window to check value - remove later
Debug.Print Range("IdSelect").Value
If IsError(Application.Match(Range("IdSelect").Value, "ProjectList", 0)) Then
'Print to Immediate Window to check value - remove later
Debug.Print Application.Match(Range("IdSelect").Value, Worksheets("Input").Range("ProjectList"), 0)
MsgBox "Invalid Choice: Project with this number does not exist!"
Exit Sub
Else
'Call procedures to execute
Call SortData
Call Count_Line_Items
Call Count_Total_Rows
Call Write_Services(ServCnt)
Call Write_Expenses(ExpCnt)
End If
'Reactivate previous active cell
OldActiveSheet.Activate
OldActiveCell.Activate
End Sub
截圖:
閱讀能否請您格式化'subroutine' :-)?你錯誤地放了'code'。你需要在問題編輯器中使用「方括號」。 – bonCodigo
好的謝謝,這解釋了它! :-)感謝您的編輯! – Matthias
請試一試答案。評論你是否需要進一步澄清或接受,如果它解決了問題;-) – bonCodigo