2017-08-18 65 views
0

我在同一張表上有一個comboBox作爲幾個數據透視表。 comboBox根據所選內容更新數據透視表過濾器。Excel Combobox _Click激活數據透視表刷新

問題是,當數據透視表刷新(設置新的過濾器)時,它將激活組合框_click函數,啓動一個循環。

有沒有辦法解決這個問題?數據透視表刷新爲什麼激活組合框?

這是_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 

updatePivot:

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 
+0

什麼的'updatePivot'在做什麼? –

+0

它正在更新SKU傳遞給它的工作表上的2個數據透視表。我將用代碼更新原件。 – Caveman42

回答

0

thry這樣

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 
+0

不幸的是,這不起作用。當頁面上有任何更新時,它仍會觸發組合框的_Click事件。使用您的解決方案,我收到錯誤「無法設置方向」。 迄今爲止唯一的解決方案是在調用更新方法之前將組合框的值設置爲「」。 – Caveman42

相關問題