Mat*_*ias 2 excel vba excel-vba
在我的Main程序中,我想编写一个快速的if语句,用于检查用户是否进行了有效输入(用户从数据列表中选择项目数,参见附件截图).为此,我正在检查项目编号是否不属于项目列表.如果是,则显示错误消息; 如果没有,则调用许多其他程序.
出于某种原因,虽然我在运行它时遇到错误2015,这意味着if语句始终为true,即使在正确的用户条目上也是如此.有人可以帮我理解错误吗?
下面的代码(注:我曾尝试将其粘贴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
Run Code Online (Sandbox Code Playgroud)
"输入"表格的屏幕截图:

你提到范围的方式相当奇怪..因为你错过了range参考.奇怪的是,你在下一行做的正确
Debug.Print Application.Match(Range("IdSelect").Value, Worksheets("Input").Range("ProjectList"), 0)
请试试这个:(我花了100年时间在手机上格式化自己的帖子.....).确保使用显式引用,如下面的示例代码所示.相应地设置您的床单.
Dim ws as Worksheet
Set ws = Sheets(1)
IsError(Application.Match(ws.Range("IdSelect").Value, ws.Range("ProjectList"), 0)) Then
Run Code Online (Sandbox Code Playgroud)
这里是您继续阅读错误处理match.
| 归档时间: |
|
| 查看次数: |
15454 次 |
| 最近记录: |