在我的Main
程序中,我想编写一个快速的 if 语句来检查用户是否进行了有效输入(用户从数据列表中选择项目数量,请参见随附的屏幕截图)。为此,我正在检查项目编号是否不在项目列表中。如果是这样,则会显示一条错误消息;如果不是,则调用许多其他程序。
出于某种原因,虽然我在运行它时收到错误 2015,这意味着 if 语句始终为真,即使在正确的用户条目上也是如此。有人可以帮我理解错误吗?
- 项目编号输入是一个名为“IdSelect”的命名单元格,位于名为“Invoice”的工作表上
- 检查此输入的数据位于名为“输入”的工作表上
- 数据存储在 B 列中,称为“ProjectList”
下面的代码(注意:我已尝试粘贴 5 次,但由于某种原因,这次格式化仍然无法正常工作 - 知道那可能是什么吗?代码格式正确。抱歉显示混乱;如果有人能告诉我我会非常感激那个问题!)
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
“输入”表的屏幕截图: