- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我三周前刚刚开始学习 VBA,所以请随意批评我的代码。
我想使用 IIF
语句来执行 If 语句内的操作:
Dim rng_ModPlanStart as range
Dim QueryDate as Variant
Set rng_ModPlanStart = ThisWorkbook.ActiveSheet.Range("AH2:AH" & LastCell)
rng_ModPlanStart(1).Offset(-1, 0).Value = "Module Planned Start"
For Each cl In rng_ModPlanStart
QueryDate = Application.VLookup(ActiveSheet.Range("E" & cl.Row), Sheets("Chamber Schedule").Range("B:U"), 20, False)
If Not ((IsError(QueryDate))) Then
cl.Value = DateDiff("d", CDate(QueryDate), Date)
End If
Next cl
但是在尝试使用 IIF 时出现错误
IIF(IsError(QueryDate), "", DateDiff("d", CDate(QueryDate), Date))
因为 VBA 认为 QueryDate 不是日期...CDate 函数应该是日期,对吧?我错过了什么?
最佳答案
您不想为此使用 IIf
(或几乎任何恕我直言)。问题是 IIf
不是一个“语句” - 它是一个函数。这意味着所有参数在传递给 IIf
函数之前都会先进行评估。因此,它评估(按顺序):
IsError(QueryDate)
""
DateDiff("d", CDate(QueryDate), Date) 'This is still evaluated if IsError returns True.
这意味着您将收到运行时错误,因为无论 QueryDate
是否错误,您都会调用 DateDiff
。
IIf
与其他语言中的三元表达式不同,因此不能将其用于保护子句。
关于excel - VBA - 带 CDate 的 IIF 语句(变体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428165/
我有一个我在 8 月中旬创建的电子表格,其中有一个表格,从那时起每天都有一列。列标题是当天的日期。日期以我希望的方式显示:“dd/mm/yyyy” 但是,我有宏需要读取这些日期才能执行其工作。因为我使
Windows 中的区域设置为 MM/DD/YYYY 现在看看这两行,以及月份的变化: Sub DateBug() Debug.Print Format(CDate("11/4/1999"),
我们有一个 VB6 应用程序(在 COM 组件中),它使用 CDate() 获取字符串并将其转换为日期,以便存储在数据库中。 例如,根据我们希望应用程序以 dd/MM/yy 还是 MM/dd/yy 进
在浏览一些没有错误处理的旧代码时,我偶然发现了意外的 CDate() function行为。 Sub Test() Dim userinput as Variant userinput
我有以下代码: minDate = CDate(Table.Cell(i, 4).Range.Text) 但我收到“类型不匹配错误”。Table.Cell(i, 4)采用“dd.mm.yy”格式。 最
我有一个下拉框,项目取决于区域设置: Private Sub UserForm_Initialize() Select Case Application.International(XlApplica
我尝试在记录集中使用 CDate() 将文本字段转换为日期,但不断收到类型不匹配错误。输入文本格式为MMDDYYYY。 CDate 不识别这种格式吗?我需要一个单独的功能吗?有什么想法吗? Text
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
似乎我一直在 VBA excel 中发现罕见的错误。CDate(Now())导致“编译错误:预期:标识符”和“运行时错误:'13':类型不匹配” Cell(1,1) = Now() Date1 = C
我对 VBA 几乎一无所知,但被分配修复错误,所以请允许这个非常基本的问题: 据我所知,将空白用户表单单元格写入工作表会导致错误结果。该值必须是日期格式,所以 CDate()被使用,但这会导致 Run
我一直在我的程序中使用 CDate,但令人担忧的是,它只能在 IE 中运行。cdate(strValue) 。 如果我将 strvalue 的值作为 01/02 传递,它返回为 Wed Jan 2 e
我想将字符串“mm/dd/yy hh:mm AM/PM”转换为日期“mm/yyyy” 为什么下面的代码输出11-2-2015? Sub Test() Dim yourStringDate As
我有一列以 DD-MM-YYYY 格式存储的日期。我正在使用 VBA 的 cdate 函数循环它们以将它们转换为值 - 但是,当月份的日期为 12 或更小时,Cdate 将日期解释为 MM-DD-YY
我三周前刚刚开始学习 VBA,所以请随意批评我的代码。 我想使用 IIF 语句来执行 If 语句内的操作: Dim rng_ModPlanStart as range Dim QueryDate as
我的任务是将旧的 VB6 程序转换为 C#。我一直难以移植的一个函数是计算从二进制文件中读取的文件的生日: .BirthDate = CDate((CLng(recPatient.birthDateB
我通常避免使用 VB 的内置转换函数(CStr、CDate、CBool、CInt 等),除非我需要进行实际转换。如果我只是将对象转换为字符串,那么我通常使用 DirectCast 或 TryCas
在 Excel 2010 VBA 中,我正在测试以确保我的代码能够正确处理无效的用户输入。我正在使用 CDate 来验证日期输入。我发现输入无效日期“0/5/14”时,CDate 返回日期 5/14/
我制作了一个名为 FormatDT 的函数,并将其放在 \include\basic_function.asp 这是该函数的代码: function FormatDT(ddate,format)
我正在尝试使用 VBA 脚本将日期转换为 long。下面是代码片段 Sub test() Dim str as string Dim d as variant str="1/1
我尝试将日期值设置为具有默认值的 PreparedStatement,但该值有时会作为 JulianValue 返回。例如(假设 spanBegin 和 spanEnd 为空) Calendar ca
我是一名优秀的程序员,十分优秀!