Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 所有日期变量的IF逻辑为空_Excel_Vba - Fatal编程技术网

Excel 所有日期变量的IF逻辑为空

Excel 所有日期变量的IF逻辑为空,excel,vba,Excel,Vba,我试图修改下面的函数以包含逻辑,如果变量PPD_1_日期、PPD_2_日期和TSpot_日期都为空(空白),则输出到我的“错误”工作表 我有一些行应该属于这个逻辑,但是它们属于Else条件 Function PPDdate() Dim PPD_1_Date As Date Dim PPD_2_Date As Date Dim TSpot_Date As Variant Dim i As Long, j As Long, k As Long j = Worksheets("PPDCI

我试图修改下面的函数以包含逻辑,如果变量
PPD_1_日期
PPD_2_日期
TSpot_日期
都为空(空白),则输出到我的“错误”工作表

我有一些行应该属于这个逻辑,但是它们属于Else条件

Function PPDdate()

Dim PPD_1_Date As Date
Dim PPD_2_Date As Date
Dim TSpot_Date As Variant
Dim i As Long, j As Long, k As Long

j = Worksheets("PPDCI").Range("A" & Rows.Count).End(xlUp).Row + 1
k = Worksheets("Error").Range("A" & Rows.Count).End(xlUp).Row + 1
For i = 2 To lstrow

PPD_1_Date = Worksheets("Data").Range("AW" & i)
PPD_2_Date = Worksheets("Data").Range("BA" & i)
Entity = Worksheets("Data").Range("J" & i)
Dept = Worksheets("Data").Range("M" & i)
TSpot_Date = Worksheets("Data").Range("AS" & i)

If PPD_1_Date > PPD_2_Date Then
   Worksheets("PPDCI").Range("A" & j & ":C" & j).Value = Worksheets("Data").Range("A" & i & ":C" & i).Value
   Worksheets("PPDCI").Range("F" & j).Value = PPD_1_Date
   Worksheets("PPDCI").Range("G" & j).Value = Worksheets("Data").Range("AX" & i).Value
   Worksheets("PPDCI").Range("H" & j).Value = Worksheets("Data").Range("AZ" & i).Value
   Worksheets("PPDCI").Range("I" & j).Value = Worksheets("Data").Range("AY" & i).Value
   j = j + 1
Else
  If PPD_1_Date < PPD_2_Date Then
    Worksheets("PPDCI").Range("A" & j & ":C" & j).Value = Worksheets("Data").Range("A" & i & ":C" & i).Value
    Worksheets("PPDCI").Range("F" & j).Value = PPD_2_Date
    'Worksheets("PPDCI").Range("G" & j).Value = "ELSE IF CONDITION"
    Worksheets("PPDCI").Range("G" & j).Value = Worksheets("Data").Range("BB" & i).Value
    Worksheets("PPDCI").Range("H" & j).Value = Worksheets("Data").Range("BD" & i).Value
    Worksheets("PPDCI").Range("I" & j).Value = Worksheets("Data").Range("BC" & i).Value
    j = j + 1
  Else
    'If IsEmpty(Worksheets("Data").Range(PPD_1_Date & i).Value) = True And IsEmpty(Worksheets("Data").Range(PPD_2_Date & i).Value) = True Then
      'GoTo EmptyRange
    'Else
    If (InStr(1, Entity, "CNG Hospital") Or InStr(1, Entity, "Home Health") Or InStr(1, Entity, "Hospice") Or InStr(1, Dept, "Volunteers") Or ((IsEmpty(PPD_1_Date) = True) And (IsEmpty(PPD_2_Date) = True))) And IsEmpty(TSpot_Date) = True Then
    Worksheets("Error").Range("A" & k & ":H" & k).Value = Worksheets("Data").Range("A" & i & ":C" & i).Value
    Worksheets("Error").Range("F" & k).Value = "REVIEW PPD DATA"
    k = k + 1
    Else
    Worksheets("PPDCI").Range("A" & j & ":C" & j).Value = Worksheets("Data").Range("A" & i & ":C" & i).Value
    Worksheets("PPDCI").Range("F" & j).Value = TSpot_Date
    Worksheets("PPDCI").Range("G" & j).Value = Worksheets("Data").Range("AX" & i).Value
    Worksheets("PPDCI").Range("H" & j).Value = Worksheets("Data").Range("AY" & i).Value
    Worksheets("PPDCI").Range("I" & j).Value = "NO PPD DATES BUT HAS TSPOT DATE1"
    j = j + 1
    
    End If

  End If
  
End If
'EmptyRange:

'k = k + 1

Next i

End Function
函数PPDdate()
Dim PPD_1_日期作为日期
Dim PPD_2_日期作为日期
Dim TSpot_日期作为变量
我长,j长,k长
j=工作表(“PPDCI”).范围(“A”和行数.Count).结束(xlUp).行数+1
k=工作表(“错误”)。范围(“A”和行数。计数)。结束(xlUp)。行数+1
对于i=2到L行
PPD_1_日期=工作表(“数据”)。范围(“AW”和i)
PPD_2_日期=工作表(“数据”)。范围(“BA”和i)
实体=工作表(“数据”)。范围(“J”和“i”)
部门=工作表(“数据”)。范围(“M”和“i”)
TSpot_日期=工作表(“数据”).范围(“AS”&i)
如果PPD_1_日期>PPD_2_日期,则
工作表(“PPDCI”).范围(“A”&j&“:C”&j).值=工作表(“数据”).范围(“A”&i&“:C”&i).值
工作表(“PPDCI”).范围(“F”和j).值=PPD\U 1\U日期
工作表(“PPDCI”).范围(“G”和j).值=工作表(“数据”).范围(“AX”和i).值
工作表(“PPDCI”).范围(“H”和j).值=工作表(“数据”).范围(“AZ”和i).值
工作表(“PPDCI”).Range(“I”和j).Value=工作表(“数据”).Range(“AY”)和I.Value
j=j+1
其他的
如果PPD_1_日期
下面是我添加到另一个OR逻辑中的代码;
或((IsEmpty(PPD_1_日期)=True)和(IsEmpty(PPD_2_日期)=True))


示例行在AW、BA和AS列中有空单元格,所以它应该写入我的错误工作表。是否存在语法或逻辑问题?最初我确实将TSPOT_Date定义为一个日期变量,但是我得到了一个“1004”运行时错误(我想是因为某些列行是空的),所以我改为Variant,但是逻辑仍然不能像我预期的那样工作。

您遇到的问题是,无法使用
isEmpty()检查
Date
变量是否为“空”
或甚至使用
Len()
,因为日期的默认值是
1899年12月30日00:00:00
,所以日期变量中始终有一个值

相反,您应该检查
Date
变量是否为空/没有像这样填充

If PPD_2_Date = 0 Then
... 

我想说是你的括号放错了那一行。您可以通过将
(IsEmpty(PPD_2_日期)=True)更改为等效的
IsEmpty(PPD_2_日期)
来清理它。但是,请注意,当您说
If InStr(…)
时,您需要说
If InStr(…)>0
@marucciboy2我已经删除了妄想,并将>0添加到If语句中,但是它仍然不起作用。我甚至在函数中的其他语句之前添加了一个完全独立的If语句,但它仍然不起作用。这是我添加的独立代码,它也不起作用:
If IsEmpty(PPD_1_Date)=True和IsEmpty(PPD_2_Date)=True和IsEmpty(TSpot_Date)=True然后工作表(“Error”)。范围(“a”&k&“:H”&k)。Value=工作表(“Data”).Range(“A”&i&“:C”&i).Value工作表(“错误”).Range(“F”&k).Value=“REVIEW PPD DATA888”结束如果
证明问题在于您无法使用
isEmpty()
或甚至
Len()
检查
日期变量是否为“空”,因为日期的默认值为
1899年12月30日00:00:00
,因此,
Date
变量中总是有一个值。相反,如果PPD_2_Date=0,您应该这样检查
,然后