【发布时间】:2018-05-25 04:47:14
【问题描述】:
我有一个日期时间列,我试图在它们之间进行过滤,无论我如何尝试格式化它,我都会收到运行时错误
'1004' 应用程序定义或对象定义的错误
这是我的代码:
Option Explicit
Sub filterDate()
''' Manually filters a datetime range '''
Dim hourly_picks As Worksheet
Dim pickCount As PivotTable
Dim picked_at As PivotField
Dim beginDate As Date
Dim endDate As Date
' set variables
Set hourly_picks = ThisWorkbook.Sheets("Hourly Pick Count by Employee")
Set pickCount = hourly_picks.PivotTables("PivotTable2")
Set picked_at = pickCount.PivotFields("picked_at")
beginDate = Format(hourly_picks.Range("L2").Value, "M/d/yyyy h:mm:ss")
endDate = Format(hourly_picks.Range("S2").Value, "M/d/yyyy h:mm:ss")
' clear all filters then filter by picked_at range
pickCount.ClearAllFilters
picked_at.PivotFilters.Add Type:=xlDateBetween, Value1:=beginDate, Value2:=endDate
End Sub
我的beginDate 和endDate 是由用户输入的,当前的值是12/6/2017 23:01:00 和12/7/2017 7:30:00。使用MsgBox 或Debug.Print 检查变量会得到12/6/2017 11:01:00 PM 和12/7/2017 7:30:00 AM。数据来自 mm/dd/yyyy h:mm:ss 格式的 postgreSQL 数据库。如果我将过滤列从pick_at更改为day_picked(仅显示mm/dd/yyyy的日期),那么它过滤没有问题。
beginDate/endDate 的格式有问题吗?如何准确判断 excel 是如何读取pick_at 的格式的?
【问题讨论】:
-
如果你使用
Debug.Print TypeName(hourly_picks.Range("L2").Value),你会得到String,还是Date? -
1004错误在哪一行?
-
xlDateBetween 行出现错误。下面的代码打印以下内容:字符串、日期; Debug.Print (TypeName(hourly_picks.Range("L2").Value)) Debug.Print (TypeName(beginDate))