如EXCEL表格数据,表格中的161125、161130表示的是需完成的截止日期,我要实现功能的是统计后续161120前需完成的工作,并做出汇总。
我先把这些数据导入了ProjData(i, j)数组,这个没问题。前面定义的ProjData(1 To 500, 1 To 50) As Variant,
再选择出其中第5列中,即ProjData(i, 5)中日期大于161120的数据,导出其行数,代码如下:
Private Sub Command2_Click()
Dim SubTotal As Integer, PDRow(1 To 500, 1 To 500) As Variant
SubTotal = 0
    For i = 1 To 26
        If ProjData(i, 5) >= 161120 Then
            SubTotal = SubTotal + 1
            PDRow(SubTotal, 5) = i
            Debug.Print PDRow(SubTotal, 5)
        End If
    Next i
End Sub
为何我 Debug.Print 出来的数据,对于标识完成或未完成的,也统计出来了?

解决方案 »

  1.   

    ProjData(i, 5) >= 161120 
    你自己看吧
    这个是数字比较
    未完成是字符串,你类型不对怎么比较?
    If ProjData(i, 5) >= 161120 Then改成
     If ProjData(i, 5) >= 161120 and instr(ProjData(i, 5),"完成")<0 Then
    看看
      

  2.   

    If ProjData(i, 5) >= 161120 And IsNumeric(ProjData(i, 5)) Then
      

  3.   

    首先你的ProjData数组定义的是Variant类型,而数组中有文字或字符,因此,系统肯定默认为String类型的数组变量了,你现在要比较第5列,而且需要和一个数字比较,因此要吗就第5列转换成数字:
    If Val(ProjData(i, 5)) >= 161120  Then
    要吗与字符串进行比较:
    If ProjData(i, 5) >= "161120“  Then
    你难道没有看到,不仅仅是标识完成或未完成的,而且小于161120的也存在。