如何让Excel在VBA中使用时间切片器自动选择最近一周?
我有一个excel,每天自动更新前一天的销售信息。此报表具有时间切片器,可以选择一年中的不同周。目前,一旦打开excel,它将被刷新,另存为新的excel,然后通过电子邮件发送。我遇到的问题是,一旦excel包含新一周的数据,所选的原始周仍将显示。我想使用VBA自动选择最新的切片机 我做了一些研究,发现了一些代码,其他用户说可以,但对我来说不起作用:如何让Excel在VBA中使用时间切片器自动选择最近一周?,excel,vba,Excel,Vba,我有一个excel,每天自动更新前一天的销售信息。此报表具有时间切片器,可以选择一年中的不同周。目前,一旦打开excel,它将被刷新,另存为新的excel,然后通过电子邮件发送。我遇到的问题是,一旦excel包含新一周的数据,所选的原始周仍将显示。我想使用VBA自动选择最新的切片机 我做了一些研究,发现了一些代码,其他用户说可以,但对我来说不起作用: Sub test() Dim i As Long, n As Long With ActiveWorkbook.SlicerCa
Sub test()
Dim i As Long, n As Long
With ActiveWorkbook.SlicerCaches("Week")
n = .SlicerItems.Count
For i = 1 To n - 1
.SlicerItems(i).Selected = False
Next i
.SlicerItems(n).Selected = True
End With
End Sub
Private Sub Workbook_Open()
Dim today As Date
today = Now
Dim todayString As String
todayString = Format$(today, "d mmm yyyy")
Dim item As SlicerItem
For Each item In ThisWorkbook.SlicerCaches("Week").SlicerItems
If item.Name = todayString Then
item.Selected = True
Else
item.Selected = False
End If
Next item
ThisWorkbook.RefreshAll
End Sub
我也尝试过这段代码,但对我来说也不起作用:
Sub test()
Dim i As Long, n As Long
With ActiveWorkbook.SlicerCaches("Week")
n = .SlicerItems.Count
For i = 1 To n - 1
.SlicerItems(i).Selected = False
Next i
.SlicerItems(n).Selected = True
End With
End Sub
Private Sub Workbook_Open()
Dim today As Date
today = Now
Dim todayString As String
todayString = Format$(today, "d mmm yyyy")
Dim item As SlicerItem
For Each item In ThisWorkbook.SlicerCaches("Week").SlicerItems
If item.Name = todayString Then
item.Selected = True
Else
item.Selected = False
End If
Next item
ThisWorkbook.RefreshAll
End Sub
上面的代码刷新透视表,保存,然后自动关闭excel。我可以添加哪些内容来自动选择最新的时间切片器?因此,以下内容是由另一个论坛的另一位用户提供的,如果有人遇到类似情况,我想发布适用于我的代码:
Private Sub Workbook_Open()
SVAL = Format(Date, "ww")
SVAL = Format(Date, "YYYY") & SVAL
With ActiveWorkbook.SlicerCaches("Slicer_slicername")
.ClearManualFilter
For Each oSlicerItem In .SlicerItems
If oSlicerItem.Name = SVAL Then
oSlicerItem.Selected = True
Else
oSlicerItem.Selected = False
End If
Next oSlicerItem
End With
End Sub
从源数据中找到您的最大(最新)值,然后循环通过
slicercachelevel.sliceritem
s并选择具有等效名称的值。您可以提供要匹配的预期周字符串吗?