0

我正在使用 vb.net winforms 应用程序自动化一些报告。我有一份报告,我需要将日期字段上的过滤器更新为 2 个日期(周一和周日或相关周)。

我通过让用户从 DateTimePicker 中选择结束日期来获取日期dateStatusEnd

当代码开始添加过滤器时,我收到以下错误消息:

在此处输入图像描述

这些日期是有效的,因为我错误地认为我以错误的顺序添加了它们,但这给出了一个错误,指出结束日期必须小于开始日期,因此它肯定会将它们读作错误。

有什么想法可以解决这个问题吗?下面的代码片段:

xlSht = aWorkBook.Worksheets("RBA Expiry Dates")

            Dim xlPivot As PivotTable = xlSht.PivotTables("PivotTable1")
            Dim xlPivotField As PivotField = xlPivot.PivotFields("RBA Expiry Date")

            xlPivotField.ClearAllFilters()

            If dateStatusEnd.Value.Day = 31 AndAlso dateStatusEnd.Value.Month = 12 And dateStatusEnd.Value.Date.ToString("dddd") <> "Sunday" Then
                Dim aDate As Date = dateStatusEnd.Value.Date

                Do Until aDate.ToString("dddd") = "Monday"
                    aDate = aDate.AddDays(-1)
                Loop

                xlPivotField.PivotFilters.Add2(Type:=XlPivotFilterType.xlDateBetween, Value1:=aDate.ToShortDateString, Value2:=dateStatusEnd.Value.Date.ToShortDateString)
            Else
                xlPivotField.PivotFilters.Add2(Type:=XlPivotFilterType.xlDateBetween, Value1:=dateStatusEnd.Value.Date.AddDays(-6).Date.ToShortDateString, Value2:=dateStatusEnd.Value.Date.ToShortDateString)
            End If
4

1 回答 1

0

万一其他人将来遇到这种情况,事实证明,在打开文件和应用过滤器之间的某个地方,Pivot 已经停止将日期列识别为日期列。

现在我只需要弄清楚为什么会这样

于 2021-12-10T08:11:51.143 回答