首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宏,该宏从切片器中选择产品,因此枢轴图会发生变化以反映所选内容。

宏,该宏从切片器中选择产品,因此枢轴图会发生变化以反映所选内容。
EN

Stack Overflow用户
提问于 2022-10-05 08:03:25
回答 1查看 42关注 0票数 0

对此的任何帮助都非常感谢。我试图设置一个产品按钮列表,并将一个宏附加到每个从切片机中选择产品并应用适当的轴值的宏中,但是下面的代码不能工作。

我创建了一个具有主轴和二级轴的枢轴图。我在图表旁边有一个切片机,这是一个产品清单。由于主轴在某些情况下可能是负值,所以我需要为每个产品的每个轴应用不同的最小值和最大值。我试着录制一个宏,它将运行A.从切片机中选择产品。设置适当的主轴和次轴min和max设置,但是当我尝试运行宏时,它将不能正常工作,换句话说,它不会只选择2D设计并应用轴设置。

如果没有宏,如果我选择另一个产品,轴与最后一个产品保持不变,这会扭曲显示的数字,特别是在主轴上负的时候。

代码语言:javascript
复制
Sub TwoD()

'

' TwoD Macro

'

With ActiveWorkbook.SlicerCaches("Slicer_Module112")

.SlicerItems("2D Design").Selected = True

End With

ActiveSheet.ChartObjects("Chart 3").Activate

ActiveChart.Axes(xlValue, xlSecondary).Select

ActiveChart.Axes(xlValue, xlSecondary).MinimumScale = -500

ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = 900

ActiveChart.Axes(xlValue).Select

ActiveChart.Axes(xlValue).MinimumScale = -0.6

End Sub
EN

回答 1

Stack Overflow用户

发布于 2022-10-05 12:53:55

你可以试试这样的东西:

代码语言:javascript
复制
Sub Slicer_Filtering(ByVal ItemToFilter As String, ByVal SecondaryAxisMin As Long, _
                        ByVal SecondaryAxisMax As Long, ByVal PrimaryAxisMin As Long, _
                            Optional ByVal PrimaryAxisMax As Long)
    
    Dim SlicerName As String
    Dim sl As SlicerItem
    Dim ChartName As String
    
    ChartName = "Chart 3" 'Update as needed
    SlicerName = "Slicer_Module112" 'Update as needed
    ThisWorkbook.SlicerCaches(SlicerName).ClearAllFilters
    
    'Filter Only Needed Value
    For Each sl In ThisWorkbook.SlicerCaches(SlicerName).SlicerItems
        If sl.Name = ItemToFilter Then
            sl.Selected = True
        Else
            sl.Selected = False
        End If
    Next
    
    ActiveSheet.ChartObjects(ChartName).Activate
    
    'Reset Axes
    ActiveChart.Axes(xlValue).MinimumScaleIsAuto = True
    ActiveChart.Axes(xlValue).MaximumScaleIsAuto = True
    ActiveChart.Axes(xlValue, xlSecondary).MinimumScaleIsAuto = True
    ActiveChart.Axes(xlValue, xlSecondary).MaximumScaleIsAuto = True
    
    'Set Axes values
    ActiveChart.Axes(xlValue, xlSecondary).MinimumScale = SecondaryAxisMin
    ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = SecondaryAxisMax
    ActiveChart.Axes(xlValue).MinimumScale = PrimaryAxisMin
    If PrimaryAxisMax <> 0 Then ActiveChart.Axes(xlValue).MaximumScale = PrimaryAxisMax

    
End Sub

然后用每个产品所需的不同值为每个按钮分配一个调用。如下所示:

代码语言:javascript
复制
Sub Caller()

    Call Slicer_Filtering("2D Design", -500, 900, -0.6)

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73957441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档