簡體   English   中英

用戶定義函數中的#value錯誤

[英]#value error in user defined function

我寫了一個VBA函數,它檢查幾件事並返回一個觸發條件格式的代碼。 一切都很好,除了公式經常觸發#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$4,Variables!$G$2,Variables!$F$2,"SRM",U2)
   '=jjcheck(B2,Variables!$G$4,Variables!$F$4,Variables!$G$2,Variables!$F$2,"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為空的時間,我改變了我為lstCTCTIF(ISBLANK(U2),TODAY(),U2)這似乎沒有幫助。 該圖顯示了工作表中發生的情況,感謝您提供的任何見解。

如果這有什么不同,請告訴我? 主要變化是從ActiveWorkbookThisWorkbook (其他一些只是為了整理)

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$4,Variables!$G$2,Variables!$F$2,"SRM",U2)
'=jjcheck(B2,Variables!$G$4,Variables!$F$4,Variables!$G$2,Variables!$F$2,"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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM