#用户定义函数中的值错误
#value error in user defined function
我写了一个 VBA 函数来检查一些东西和 returns 一个代码
触发条件格式。除了
该公式经常触发 #value
错误。它为所有人做这件事
包含公式的单元格(几千个)。错误出现
每当我打开另一个工作簿时。当我不这样做时,它有时会发生
打开另一个工作簿。
函数在这里:
Function jjcheck(STDTRow As Integer, cuCOL As Integer, cuMax As Integer, trmEnd As Integer, trmEMax As Integer, worksheetSRC As String, lstCTCT As Date) As Variant
'use in spreadsheet =jjcheck(B2,Variables!$G,Variables!$G,Variables!$F,"SRM",U2)
'=jjcheck(B2,Variables!$G,Variables!$F,Variables!$G,Variables!$F,"SRM",IF(ISBLANK(U2),TODAY(),U2))
Dim V() As String, dayMax As Integer, lookup As Date, theDiff As Integer, lstContact As String
V = Split(ActiveWorkbook.ActiveSheet.Cells(1, 2).Value, "-"): dayMax = V(1): theDiff = 256
lookup = lstCTCT
theDiff = DateDiff("d", lookup, Date): lstContact = ""
If theDiff > dayMax Then lstContact = "Alert"
Dim STDcu As Integer, STtrmEnd As Date, daysTOtrmend As Integer
STDcu = ActiveWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, cuCOL).Value
STtrmEnd = ActiveWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, trmEnd).Value
daysTOtrmend = DateDiff("d", Date, STtrmEnd)
If STDcu < cuMax And daysTOtrmend < trmEMax Then
jjcheck = "CHECK" & lstContact
ElseIf daysTOtrmend < trmEMax / 2 Then
jjcheck = "ETerm" & lstContact
Else
jjcheck = "" & lstContact
End If
End Function
怀疑是时间单元格U2
为空导致的错误,我
将我为 lstCTCT
设置的内容更改为 IF(ISBLANK(U2),TODAY(),U2)
这似乎没有帮助。The image shows what happens in the worksheet
感谢您提供任何见解。
让我知道这是否有任何不同?主要变化来自
ActiveWorkbook
到 ThisWorkbook
。 (其他几个只是为了整理)
Function jjcheck(STDTRow As Integer, cuCOL As Integer, cuMax As Integer, trmEnd As Integer, trmEMax As Integer, worksheetSRC As String, lstCTCT As Date) as Variant
'use in spreadsheet =jjcheck(B2,Variables!$G,Variables!$G,Variables!$F,"SRM",U2)
'=jjcheck(B2,Variables!$G,Variables!$F,Variables!$G,Variables!$F,"SRM",IF(ISBLANK(U2),TODAY(),U2))
Dim V() As String, lstContact As String
Dim dayMax As Integer, theDiff As Integer, STDcu As Integer, daysTOtrmend As Integer
Dim lookup As Date, STtrmEnd As Date
STDcu = ThisWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, cuCOL).Value
STtrmEnd = ThisWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, trmEnd).Value
daysTOtrmend = DateDiff("d", Date, STtrmEnd)
V = Split(ThisWorkbook.ActiveSheet.Cells(1, 2).Value, "-"): dayMax = V(1): theDiff = 256
lookup = lstCTCT
theDiff = DateDiff("d", lookup, Date): lstContact = vbNulltring
If theDiff > dayMax Then lstContact = "Alert"
If STDcu < cuMax And daysTOtrmend < trmEMax Then
jjcheck = "CHECK" & lstContact
ElseIf daysTOtrmend < trmEMax / 2 Then
jjcheck = "ETerm" & lstContact
Else
jjcheck = vbNullString & lstContact
End If
End Function
我写了一个 VBA 函数来检查一些东西和 returns 一个代码
触发条件格式。除了
该公式经常触发 #value
错误。它为所有人做这件事
包含公式的单元格(几千个)。错误出现
每当我打开另一个工作簿时。当我不这样做时,它有时会发生
打开另一个工作簿。
函数在这里:
Function jjcheck(STDTRow As Integer, cuCOL As Integer, cuMax As Integer, trmEnd As Integer, trmEMax As Integer, worksheetSRC As String, lstCTCT As Date) As Variant
'use in spreadsheet =jjcheck(B2,Variables!$G,Variables!$G,Variables!$F,"SRM",U2)
'=jjcheck(B2,Variables!$G,Variables!$F,Variables!$G,Variables!$F,"SRM",IF(ISBLANK(U2),TODAY(),U2))
Dim V() As String, dayMax As Integer, lookup As Date, theDiff As Integer, lstContact As String
V = Split(ActiveWorkbook.ActiveSheet.Cells(1, 2).Value, "-"): dayMax = V(1): theDiff = 256
lookup = lstCTCT
theDiff = DateDiff("d", lookup, Date): lstContact = ""
If theDiff > dayMax Then lstContact = "Alert"
Dim STDcu As Integer, STtrmEnd As Date, daysTOtrmend As Integer
STDcu = ActiveWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, cuCOL).Value
STtrmEnd = ActiveWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, trmEnd).Value
daysTOtrmend = DateDiff("d", Date, STtrmEnd)
If STDcu < cuMax And daysTOtrmend < trmEMax Then
jjcheck = "CHECK" & lstContact
ElseIf daysTOtrmend < trmEMax / 2 Then
jjcheck = "ETerm" & lstContact
Else
jjcheck = "" & lstContact
End If
End Function
怀疑是时间单元格U2
为空导致的错误,我
将我为 lstCTCT
设置的内容更改为 IF(ISBLANK(U2),TODAY(),U2)
这似乎没有帮助。The image shows what happens in the worksheet
感谢您提供任何见解。
让我知道这是否有任何不同?主要变化来自
ActiveWorkbook
到 ThisWorkbook
。 (其他几个只是为了整理)
Function jjcheck(STDTRow As Integer, cuCOL As Integer, cuMax As Integer, trmEnd As Integer, trmEMax As Integer, worksheetSRC As String, lstCTCT As Date) as Variant
'use in spreadsheet =jjcheck(B2,Variables!$G,Variables!$G,Variables!$F,"SRM",U2)
'=jjcheck(B2,Variables!$G,Variables!$F,Variables!$G,Variables!$F,"SRM",IF(ISBLANK(U2),TODAY(),U2))
Dim V() As String, lstContact As String
Dim dayMax As Integer, theDiff As Integer, STDcu As Integer, daysTOtrmend As Integer
Dim lookup As Date, STtrmEnd As Date
STDcu = ThisWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, cuCOL).Value
STtrmEnd = ThisWorkbook.Worksheets(worksheetSRC).Cells(STDTRow, trmEnd).Value
daysTOtrmend = DateDiff("d", Date, STtrmEnd)
V = Split(ThisWorkbook.ActiveSheet.Cells(1, 2).Value, "-"): dayMax = V(1): theDiff = 256
lookup = lstCTCT
theDiff = DateDiff("d", lookup, Date): lstContact = vbNulltring
If theDiff > dayMax Then lstContact = "Alert"
If STDcu < cuMax And daysTOtrmend < trmEMax Then
jjcheck = "CHECK" & lstContact
ElseIf daysTOtrmend < trmEMax / 2 Then
jjcheck = "ETerm" & lstContact
Else
jjcheck = vbNullString & lstContact
End If
End Function