UDF 未在 VBA 代码中计算

UDF not calculated in VBA code

我有一个 UDF returns 文本取决于每行的时间和日期。

这个 UDF 公式放在 X2 中,当我 运行 替换 sheet 中所有数据的数据更新代码时,我在 X2:Y & LastRow 上使用 filldown。
我的计划是在 UDF 完成后过滤数据并删除不需要的数据。
因为 Excel 在过滤时重新计算数据,我想我可以复制 -> 粘贴值以确保 UDF 不会再次 运行。
完整代码如下,但 "interesting" 部分位于 ''''''.

之间
Sub importera()

    Dim mainWB As Workbook
    Dim srcWB As Workbook
    Set mainWB = ThisWorkbook

    'Application.ScreenUpdating = False

    Sheets("XCFIL").Activate
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Range("A3:Y" & LastRow).ClearContents
    Range("A2:W2").ClearContents


    Workbooks.Open Filename:="C:\Textfiler\XCFIL.TXT"
    Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True


    Set srcWB = ActiveWorkbook



    ActiveWorkbook.Sheets(1).Range("A2:W" & ActiveSheet.UsedRange.Rows.Count).Copy
    ThisWorkbook.Activate
    ActiveSheet.Paste Destination:=Worksheets("XCFIL").Range("A2")

    Application.DisplayAlerts = False
    srcWB.Close
    Application.DisplayAlerts = True

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Range("X2:Y" & LastRow).FillDown

    ' To make sure the UDF does not run again turn off calculations
    Application.Calculation = xlManual
    Range("X3:Y" & LastRow).Copy
    Range("X3").PasteSpecial xlPasteValues
    Application.Calculation = xlAutomatic
    ' Turn on calculations again when formulas is replaced with values

    ActiveSheet.Range("A1:Y" & LastRow).AutoFilter Field:=24, Criteria1:="0"
    With ActiveSheet.AutoFilter.Range
        .Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete
    End With
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    ThisWorkbook.Activate

    Worksheets("Resultat").PivotTables("Pivottabell3").PivotCache.Refresh
    Worksheets("Resultat").PivotTables("Pivottabell2").PivotCache.Refresh
    Worksheets("Resultat").PivotTables("Pivottabell1").PivotCache.Refresh

End Sub

问题是 FillDown 不会 运行 所有单元格上的 UDF。
代码完成 FillDown 后,计算开始在状态栏 (?) 中计数,当它达到 100% 时,它还没有完成。它计算不到 50%,其余值是 #VALUE! 个错误。 (如果我停止数据更新代码,UDF 运行s 和芬兰语正确无值错误)

但这意味着在我关闭计算并进行复制粘贴之前,我需要一些方法来检测所有 UDF 单元何时完成。
关于如何更改代码有什么建议吗?

我建议您在适当的时候在您的 VBA 代码中进行相关计算,然后将这些结果直接输入到您的工作表中。无需担心 UDF 的完成。编码应该更简单和更快。