特定日期值后,VBA中出现#VALUE错误

时间:2018-11-21 12:43:22

标签: excel vba

我已经编写了一些VBA函数(在下面的代码中列出) 我正在使用功能比较两个工作表中的记录,以将相关值从一个工作表返回到另一个工作表。

所有其他功能所依赖的第一个功能返回患者ID号。

选择患者ID的条件:

  

该功能比较30天内患者到达的日期和时间   分钟间隔(因为信息来自一个来源   通常相差几分钟),性别,诊所ID,   和出生年份。患者ID号码开始于50000左右,然后继续   直到大约150000。我需要比较日期时间,因为   不时有两名性别,生日和诊所相同的患者   是在同一天到达的。

该函数在100000行之后失败 除了#VALUE以外!错误返回。

以下是我测试过的复杂场景,发现日期和时间有误。

  
      
  • 仅比较日期,没有间隔,将返回正常值。
  •   
  • 上次使用的患者ID是98472(尚未报告所有患者ID),患者的到达日期为2018年5月1日,   晚上8:42。
  •   
  • 下一个患者ID为100471,于2018年5月4日上午10:43到达。 *函数以#VALUE的形式返回此患者!错误,   尽管所有参数都在那里。
  •   

这是代码(请问任何菜鸟的错误,我不是专业的编码员):

Function EINSATZ(aufnahmdat As Date, geburtsdat As Integer, geschlecht As Integer, klinik As Integer)
    'DEFINING PARAMETERS
    'rsu_r is the regional stroke unit row
    'rsu_c is the regional stroke unit column
    'size is the patient list size
    'iffunction allows the function to work through the patient list
    'converter converts letter to integer for sex

    Dim rsu_r As Integer
    Dim rsu_c As Integer
    Dim size As Variant
    Dim iffunction As Single
    Dim converter As Integer

    'here starts the dimension definition for rsu cells
    rsu_r = ActiveCell.Row
    rsu_c = ActiveCell.Column


    'here starts the size function
    'size is predetermined to measure and print the highest value within the first 9996 cells
    For iffunction = 4 To 9999
        If Application.WorksheetFunction.IsNumber(Worksheets("Präklinik").Cells(iffunction, 5)) Then
            size = size + 1
        End If
    Next iffunction

    'here starts the if function
    For iffunction = 4 To size        
        If Worksheets("Präklinik").Cells(iffunction, 6).Value = "m" Then
            converter = 2
        Else
            converter = 1
        End If

        If Worksheets("Präklinik").Cells(iffunction, 4).Value + Worksheets("Präklinik").Cells(iffunction, 17).Value < aufnahmdat + 1 / 48 _
           And Worksheets("Präklinik").Cells(iffunction, 4).Value + Worksheets("Präklinik").Cells(iffunction, 17).Value > aufnahmdat - 1 / 48 _
           And Worksheets("Präklinik").Cells(iffunction, 5).Value = geburtsdat _
           And converter = geschlecht _
           And Worksheets("Präklinik").Cells(iffunction, 41).Value = klinik Then
            EINSATZ = Worksheets("Präklinik").Cells(iffunction, 2).Value
            Exit For
        End If
    Next iffunction      
End Function

请帮助我诊断实际的错误原因!

0 个答案:

没有答案