2015-02-06 3 views
0

Мне нужно установить слайсер, чтобы активировать запись для вчерашней даты. Я собрал код ниже, и он деактивирует/активирует и взаимодействует, как я бы хотел. Недостатком является то, что он продолжает выделять поля, которые он не должен (см .: записи за несколько дней до соответствующего дня).Настройка Slicer на вчерашнюю дату

Private Sub GroundHogDay() 

Dim ydate As Date 
ydate = Today - 1 
Dim YDateString As String 
YDateString = Format$(ydate, "mm/dd/yyyy") 

Dim item As SlicerItem 

For Each item In ThisWorkbook.SlicerCaches("Slicer_Date").SlicerItems 
    If item.Name > YDateString Then 
     item.Selected = True 
    Else 
     item.Selected = False 
    End If 
Next item 

ThisWorkbook.RefreshAll 

End Sub 

Любая помощь будет оценена по достоинству.

РЕДАКТИРОВАТЬ: Я пробовал это - ни в коем случае.

Today - 2 
Now - 1 
Now - 2 

ответ

1

В конце концов ответ был найден:

Sub GroundHogDay() 
Dim today As Date 
today = Now - 2 
Dim todayString As String 
todayString = Format$(today, "m/d/yyyy") 

Dim item As SlicerItem 

ThisWorkbook.SlicerCaches("DATE").ClearManualFilter 
With ActiveWorkbook.SlicerCaches("DATE") 
'earliest data available in the data 
.SlicerItems("1/1/2013").Selected = True 
.SlicerItems("(blank)").Selected = False 
End With 

For Each item In ThisWorkbook.SlicerCaches("DATE").SlicerItems 

If item.Name = todayString Then 
item.Selected = True 
Else 
item.Selected = False 
End If 
Next item 

ThisWorkbook.RefreshAll 

End Sub 
Смежные вопросы