У меня есть Excel, который автоматически обновляется ежедневно с информацией о продажах за предыдущий день. В этом отчете есть разделители времени для выбора разных недель в году. В настоящее время, как только Excel открывается, он обновляется, сохраняется как новый Excel, а затем по электронной почте. Проблема, с которой я столкнулся, заключается в том, что, как только Excel содержит данные за новую неделю, выбранная исходная неделя все еще отображается. Я хотел бы использовать VBA для автоматического выбора новейшего слайсера.
Я провел некоторое исследование и нашел код, который, по словам других пользователей, работает, но он не работает для меня:
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. Что я могу добавить к нему, чтобы автоматически выбрать самый текущий временной срез?