Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
交叉筛选时Excel崩溃_Excel_Vba_Powerpivot_Powerquery_Pivot Chart - Fatal编程技术网

交叉筛选时Excel崩溃

交叉筛选时Excel崩溃,excel,vba,powerpivot,powerquery,pivot-chart,Excel,Vba,Powerpivot,Powerquery,Pivot Chart,我有一个只读的2013工作簿,用作模板工具,数据模型连接到4个链接的透视图,并启用切片器交叉筛选。当我在一个切片器上选择“筛选选项”以筛选出另一个切片器上包含数据的所有选项时,我的工作簿崩溃 也就是说,切片器1有一个选项A、B、C等等 选项A与切片器2上的子集1、2和3相关 选项B与切片器2上的子集4、5和6相关 如果切片器2选择了任何数据,并且我过滤切片器1以排除该选择的任何部分,我的工作簿将崩溃 不起作用的事情: 我重建了图表、切片器和连接,但仍然遇到同样的问题 我在另一个工作簿中构建

我有一个只读的2013工作簿,用作模板工具,数据模型连接到4个链接的透视图,并启用切片器交叉筛选。当我在一个切片器上选择“筛选选项”以筛选出另一个切片器上包含数据的所有选项时,我的工作簿崩溃

也就是说,切片器1有一个选项A、B、C等等

  • 选项A与切片器2上的子集1、2和3相关
  • 选项B与切片器2上的子集4、5和6相关
如果切片器2选择了任何数据,并且我过滤切片器1以排除该选择的任何部分,我的工作簿将崩溃

不起作用的事情:

  • 我重建了图表、切片器和连接,但仍然遇到同样的问题
  • 我在另一个工作簿中构建了一个非常简单的模型,无法重现该问题
  • 我关掉了活动
  • 我注释掉了我的VBA
如果我很小心,那么从slicer 2中选择共享slicer 1关系的项目似乎“起作用”,但这里显然有些东西坏了

只有当切片器2与切片器1的相关子集中没有重叠时,才会出现这种情况。如果选项A有一个子集1、2、3、4、5。选项B有一个3,4,5,但没有1或2我不明白这个问题,只有当所有子集对父项都是唯一的,并且选择不重叠时才有这个问题(就像a=crash中的5,当5对B是唯一的,并且选择了a时)。我找不到任何与此相关的已知问题

事件查看器显示:

Faulting application name: EXCEL.EXE, version: 15.0.4797.1003, time stamp: 0x56bf05fc
    Faulting module name: msolap110_xl.DLL, version: 0.0.0.0, time stamp: 0x55b0c5bf
我的问题是:

  • “msolap110_xl.DLL”是问题还是更可能是症状的一部分

  • 我是否以某种方式错误地处理了透视图、切片器或数据模型,从而导致了这种情况

  • 能修好吗

  • 相关节目:

    Private Sub myReloadDataModel()
        If Range("myHasPath").Value = "True" Then
            MsgBox "You need to enter a path to a valid target location.", vbOKOnly, "Bad Path"
        Else
            myUser = MsgBox("Are you sure you want Reload the Data Model with any csv data located in the target path?", vbOKCancel, "3. Load Data Model")
            If myUser = vbOK Then
    
                Application.ScreenUpdating = False
                Application.EnableEvents = False
                Application.Cursor = xlWait
    
                myTime01 = Time
                Sheets("Notes").Unprotect
                Sheets("2. Get Table").Unprotect
                ActiveWorkbook.RefreshAll
    '            ActiveWorkbook.Model.Refresh
    '            ActiveWorkbook.Connections("Query - myGetMasterSpan").Refresh
                x = ActiveWorkbook.Connections("Query - myGetMasterSpan").ModelTables.Item(1).RecordCount
                myTime02 = Time
                myTime03 = Format(myTime02 - myTime01, "HH:MM:SS")
    
                Sheets("2. Get Table").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
                    , AllowUsingPivotTables:=True
    
                Application.Cursor = xlDefault
                Application.EnableEvents = True
                Application.ScreenUpdating = True
    
                MsgBox Format(x, "#,##0") & " Records Loaded!" & vbNewLine _
                    & vbNewLine _
                    & "Total Update Time = " & myTime03, , "Update Completed"
            End If
        End If
    End Sub
    
    事件

    这个潜艇为我获得了选择范围

    Private Sub mySlicerMagic()
        On Error GoTo 100
    
        Set myX = ActiveWorkbook.SlicerCaches("Slicer_Pulse_Set").SlicerCacheLevels(1).SlicerItems
    
        For i = 1 To myX.Count
            If myX(i).Selected = True Then
                x = x + 1
                If x = 1 Then
                    myItemName01 = myX(i).SourceName
                End If
                myItemName02 = myX(i).SourceName
            End If
        Next
    
        Range("myPulseRange")(1, 1) = myItemName01
        Range("myPulseRange")(2, 1) = myItemName02
    100
    End Sub
    

    能否检查Excel版本号以确保安装了最新的修复程序?或者,选项“直观地指示没有数据的项目”可能会对性能造成很大的影响:有一个更新我没有预料到,因为我启用了此Office产品的更新,它们应该自动下载和安装。对我来说,这显然是一个错误的假设。安装后没有提示我重新启动,但我还是重新启动了。不幸的是,更新没有解决这个问题。不过,我确实收到了一条新消息,将有关崩溃的信息发送给了微软,我做到了。以前运行的版本:15.0.4797.1003现在运行的版本:15.0.4805.1003My切片器设置为“隐藏没有数据的项目”。我尝试了两种设置。我的想法是,这两种设置之间的处理差异可能在某种程度上与此故障有关,但它会崩溃。更新后,我再次尝试切换此选项,但没有效果。@ZachH现在您使用的是最新版本,如果此情况仍然存在,则打开支持案例是最好的方法。您可以检查Excel版本号以确保安装了最新的修复程序吗?或者,选项“直观地指示没有数据的项目”可能会对性能造成很大的影响:有一个更新我没有预料到,因为我启用了此Office产品的更新,它们应该自动下载和安装。对我来说,这显然是一个错误的假设。安装后没有提示我重新启动,但我还是重新启动了。不幸的是,更新没有解决这个问题。不过,我确实收到了一条新消息,将有关崩溃的信息发送给了微软,我做到了。以前运行的版本:15.0.4797.1003现在运行的版本:15.0.4805.1003My切片器设置为“隐藏没有数据的项目”。我尝试了两种设置。我的想法是,这两种设置之间的处理差异可能在某种程度上与此故障有关,但它会崩溃。更新后,我再次尝试切换此选项,但没有效果。@ZachH现在您使用的是最新版本,如果它仍然存在,那么打开支持案例是最好的方法
    Private Sub mySlicerMagic()
        On Error GoTo 100
    
        Set myX = ActiveWorkbook.SlicerCaches("Slicer_Pulse_Set").SlicerCacheLevels(1).SlicerItems
    
        For i = 1 To myX.Count
            If myX(i).Selected = True Then
                x = x + 1
                If x = 1 Then
                    myItemName01 = myX(i).SourceName
                End If
                myItemName02 = myX(i).SourceName
            End If
        Next
    
        Range("myPulseRange")(1, 1) = myItemName01
        Range("myPulseRange")(2, 1) = myItemName02
    100
    End Sub