【问题标题】:Excel Combobox _Click activating on Pivot table refreshExcel Combobox _Click 在数据透视表刷新时激活
【发布时间】:2017-08-18 14:31:13
【问题描述】:

我有一个comboBox 与一些数据透视表在同一张纸上。 comboBox 根据所选内容更新数据透视表过滤器。

问题是,当数据透视表刷新(设置新过滤器)时,它会激活组合框_clickfunction,开始一个循环。

有没有办法解决这个问题?为什么数据透视表刷新会激活组合框?

这是 _Click 事件中的代码:

Private Sub cmb_SkuSelect_Click()
    Dim xlSheetSort As Worksheet
    Dim lastRow As Long
    Dim xlCell As Range
    Dim skuValue As Integer

    Set xlSheetSort = ActiveWorkbook.Worksheets("Sort")

    lastRow = xlSheetSort.Range("A1").End(xlDown).Row

    With xlSheetSort.Range("B1:B" & lastRow)
        Set xlCell = .Find(cmb_SkuSelect.Value, LookIn:=xlValues)
        If Not xlCell Is Nothing Then
            skuValue = xlSheetSort.Range("A" & xlCell.Row).Value
        End If
    End With

    updatePivot skuValue
End Sub

更新枢轴:

Public Sub updatePivot(ByVal sku As Integer)
    Dim pt As PivotTable
    Dim pt2 As PivotTable
    Dim Field As PivotField
    Dim Field2 As PivotField
    Dim newSku As String

    Set pt = Worksheets("Sku Inventory").PivotTables("SkuInfo")
    Set Field = pt.PivotFields("Sku Number")

    Set pt2 = Worksheets("Sku Inventory").PivotTables("InventoryInfo")
    Set Field2 = pt2.PivotFields("Sku Number")

    newSku = sku

    With pt
        Field.CurrentPage = newSku
        pt.RefreshTable
    End With

    With pt2
        Field2.CurrentPage = newSku
        pt2.RefreshTable
    End With
End Sub

【问题讨论】:

  • updatePivot 在做什么?
  • 它正在使用传递给它的 SKU 更新工作表上的 2 个数据透视表。我会用代码更新原件。

标签: vba excel combobox excel-2013


【解决方案1】:

这样试试

Public Sub updatePivot(ByVal sku As Integer)
    Dim pt As PivotTable
    Dim pt2 As PivotTable
    Dim Field As PivotField
    Dim Field2 As PivotField
    Dim newSku As String

    Set pt = Worksheets("Sku Inventory").PivotTables("SkuInfo")
    Set Field = pt.PivotFields("Sku Number")

    Set pt2 = Worksheets("Sku Inventory").PivotTables("InventoryInfo")
    Set Field2 = pt2.PivotFields("Sku Number")

    newSku = sku

    With pt
        With Field
            .Orientation = xlHidden
            pt.RefreshTable
            .Orientation = xlPageField
            .CurrentPage = newSku
        End With
    End With

    With pt2
        With Field2
            .Orientation = xlHidden
            pt2.RefreshTable
            .Orientation = xlPageField
            .CurrentPage = newSku
        End With

    End With
End Sub

【讨论】:

  • 不幸的是,这不起作用。当页面上有任何更新时,它仍然会触发组合框的 _Click 事件。使用您的解决方案,我收到错误“无法设置方向”。到目前为止我找到的唯一解决方案是在调用更新方法之前将组合框的值设置为“”。
猜你喜欢
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多