vba - 在 VBA 中使用“And _”避免嵌套 IF
问题描述
我试图避免嵌套 IF 语句,但下面的代码给了我一个错误。只有当我有第一行时才会出现错误。没有它,另一个“和_”可以完美地工作。我无法理解为什么!作为背景,此代码的目的是检查日期的格式是否正确(dd/mm/yyyy)并且发生在 2020 年之后。任何帮助将不胜感激!
此代码不起作用:
Public ValidPaymentDate As Boolean
Public ArrInput_PaymentDate As Variant
ArrInput_PaymentDate = Split(PaymentDate.Value, "/")
If (UBound(ArrInput_PaymentDate) = 2) And _ ' ***Here is the issue!!!***
ArrInput_PaymentDate(0) > 0 And ArrInput_PaymentDate(0) <= 31 And _
ArrInput_PaymentDate(1) > 0 And ArrInput_PaymentDate(1) <= 12 And _
ArrInput_PaymentDate(2) >= 20 And ArrInput_PaymentDate(2) < 100 Then
ValidPaymentDate = True
End If
此代码有效(但我想避免嵌套 If 语句):
Public ValidPaymentDate As Boolean
Public ArrInput_PaymentDate As Variant
ArrInput_PaymentDate = Split(PaymentDate.Value, "/")
If (UBound(ArrInput_PaymentDate) = 2) Then
If ArrInput_PaymentDate(0) > 0 And ArrInput_PaymentDate(0) <= 31 And _
ArrInput_PaymentDate(1) > 0 And ArrInput_PaymentDate(1) <= 12 And _
ArrInput_PaymentDate(2) >= 20 And ArrInput_PaymentDate(2) < 100 Then
ValidPaymentDate = True
End If
End If
解决方案
你有一个不属于那里的额外括号
If (UBound(ArrInput_PaymentDate) = 2 And _ ' ***Here is the issue!!!***
ArrInput_PaymentDate(0) > 0 And ArrInput_PaymentDate(0) <= 31 And _
ArrInput_PaymentDate(1) > 0 And ArrInput_PaymentDate(1) <= 12 And _
ArrInput_PaymentDate(2) >= 20 And ArrInput_PaymentDate(2) < 100) Then
ValidPaymentDate = True
End If
推荐阅读
- angular - 实现 Angular 动态组件的问题 - AOT 和变更检测
- user-agent - Traefik 的 access.log 中缺少用户代理
- java - 如何检查firestore中的查询?
- webpack - Webpack:无法获取 /
- python - 在 aws lambda 下使用 selenium+python+chromedriver+headless-chrome,chrome 驱动程序未加载
- python - tensorflow 核心功能中模块的缺失/存在
- arrays - 我如何过滤一组对象以仅显示具有所有现有类型属性的对象的 id
- npm-install - package.json 禁用“npm install”
- java - 为什么spring data dynamodb返回一个带有空元素的列表而不是一个空列表?
- linux - 文件和内存。它们是如何映射的...调试、文件系统“ls -a”文件和正在运行的程序的地址空间