Я думаю, вам нужно будет построить массив по ходу (например, arr), аналогично (не проверено):
dim arr as variant
Dim Apr18 As String, May18 As String, Jun18 As String
'
redim arr(0)
If Workbooks("A").Sheets("FilePath").CheckApr.Value = True Then
if not arr(ubound(arr)) = "" then redim preserve arr(ubound(arr)+1) 'redimensions the array to be +1 size larger, preserviing previous data
arr(ubound(arr)) = "[Calendar].[Date Hierarchy].[Year].&[2018].&[April]" 'put into array
End If
'add other items
Workbooks("B").SlicerCaches("Slicer_Date_Hierarchy") _
.VisibleSlicerItemsList = arr 'use array you generated
Edit1:
Немного изменив это, чтобы помочь счету за 12 месяцев:
dim arr as variant, brr as variant, crr as variant, i as long
brr = array("CheckJan","CheckFeb","CheckMar","CheckApr","CheckMay") 'etc...
crr = array("January","February","March","April","May") 'etc...
redim arr(0)
For i = lbound(brr) to ubound(brr) 'ensure brr and crr are the same length
If Workbooks("A").Sheets("FilePath").CheckBoxes(brr(i)).Value = True Then
if not arr(ubound(arr)) = "" then redim preserve arr(ubound(arr)+1) 'redimensions the array to be +1 size larger, preserviing previous data
arr(ubound(arr)) = "[Calendar].[Date Hierarchy].[Year].&[2018].&[" & crr(i) & "]" 'put into array
End If
next i
Workbooks("B").SlicerCaches("Slicer_Date_Hierarchy").VisibleSlicerItemsList = arr 'use array you generated