У меня есть шесть местоположений a, b, c, d, e, f в моем поворотном слайсере, а у меня пять имеют формы на основе, которые имеют серый цвет. На основе выбора в слайсере цвет коробки изменится на зеленый. Когда все местоположения выбраны, все поля станут зелеными. Я достиг этого через условие в VBA. Но я смущен тем, как удовлетворять условию, когда пользователь выбирает только три или два местоположения. Каков наилучший способ кодирования, чтобы удовлетворить это условиеVBA лучший способ кодировать повторяющиеся условия
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = "PivotTable4" Then
If ActiveWorkbook.SlicerCaches("Slicer_Site_work_being_carried_out").SlicerItems("a").Selected = True Then
With ActiveSheet.Shapes("Freeform: Shape 6").Fill.ForeColor
.RGB = vbGreen
End With
With ActiveSheet.Shapes("Freeform: Shape 15").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 11").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 12").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 7").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 9").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Site_work_being_carried_out").SlicerItems("b").Selected = True Then
With ActiveSheet.Shapes("Freeform: Shape 15").Fill.ForeColor
.RGB = vbGreen
End With
With ActiveSheet.Shapes("Freeform: Shape 6").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 11").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 12").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 7").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 9").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Site_work_being_carried_out").SlicerItems("c").Selected = True Then
With ActiveSheet.Shapes("Freeform: Shape 11").Fill.ForeColor
.RGB = vbGreen
End With
With ActiveSheet.Shapes("Freeform: Shape 15").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 6").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 12").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 7").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 9").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Site_work_being_carried_out").SlicerItems("d").Selected = True Then
With ActiveSheet.Shapes("Freeform: Shape 12").Fill.ForeColor
.RGB = vbGreen
End With
With ActiveSheet.Shapes("Freeform: Shape 11").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 15").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 6").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 7").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 9").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Site_work_being_carried_out").SlicerItems("e").Selected = True Then
With ActiveSheet.Shapes("Freeform: Shape 7").Fill.ForeColor
.RGB = vbGreen
End With
With ActiveSheet.Shapes("Freeform: Shape 12").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 11").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 15").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 6").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 9").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
ElseIf ActiveWorkbook.SlicerCaches("Slicer_Site_work_being_carried_out").SlicerItems("f").Selected = True Then
With ActiveSheet.Shapes("Freeform: Shape 9").Fill.ForeColor
.RGB = vbGreen
End With
With ActiveSheet.Shapes("Freeform: Shape 7").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 12").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 11").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 15").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
With ActiveSheet.Shapes("Freeform: Shape 6").Fill.ForeColor
.RGB = RGB(205, 192, 176)
End With
End If
End If
End Sub
Start, разместив код у вас есть и, пожалуйста, прочитайте это: http://stackoverflow.com/ help/how-to-ask – Miqi180
Вы говорите о 5 местах и 5 формах, но в коде есть 6, - проясните пожалуйста. – omegastripes