2017-08-10 30 views
0

我想弄清楚如何通過使用來自最終用戶的2輸入字段來排序數據透視表。目前我只能用一個來做。我現在的代碼是:從2輸入字段在excel vba中排序數據透視表

Private Sub SortingBox_Change() 
Dim PT As PivotTable 
Dim CB As ComboBox 

Set PT = Worksheets("Tableau Dynamique").PivotTables("LEO") 
Set CB = SortingBox 

If CB.Text = "Asc - % relevé en ligne" Then 
    PT.PivotFields("No Marchand").AutoSort Order:=xlAscending, Field:="% relevé en ligne" 

ElseIf CB.Text = "Desc - % relevé en ligne" Then 
    PT.PivotFields("No Marchand").AutoSort Order:=xlDescending, Field:="% relevé en ligne" 

ElseIf CB.Text = "No Marchand" Then 
    PT.PivotFields("No Marchand").AutoSort Order:=xlAscending, Field:="No Marchand" 

End If 
End Sub 

它工作正常,但我需要每個升序和降序方案的列表條目。我更喜歡設置AutoSort.Order與一個單獨的ComboBox設置字段。唯一的問題是,當我嘗試這樣做時,它告訴我我沒有足夠的參數。

有誰知道我能做些什麼來排序?

+0

你能否進一步澄清你的問題?也許你可以鏈接到一個圖像顯示你想要的。 – jeffreyweir

回答

0

嗨,對不起,如果它不明確。同時。我在週末找到了解決方案。對於任何人,如果他們在這裏尋找類似的東西,我做了什麼。

首先澄清:

我有一個動態表,我想最終用戶有一個歡樂的方式進行排序表(沒有VBA他們將不得不在主柱去打開排序菜單,然後選擇額外的排序選項,而不是選擇一堆選項來獲得他們想要的內容,並且不太清楚如果你不知道如何執行的操作)。

我選擇了放置ComboBox,因此它可以更容易地做這樣的排序: ComboBoxImg。對不起它的法語。簡而言之,他們將有一個ComboBox來基於(1)字段,(2)訂單,(3)樞軸線(基於他們想要的月份)進行排序

爲了簡化我改爲創建的代碼每個ComboBox的變量都能夠與AutoSort方法進行交互。最終的代碼看起來是這樣的:

Public Sub Sorter() 
Dim PT As PivotTable 
Dim OrderValue As String 
Dim OrderSort As XlSortOrder 
Dim FieldValue As String 
Dim MonthValue As Integer 
Dim TableName As String 

On Error Resume Next 

TableName = "LEO" 
Set PT = Worksheets("Tableau Dynamique").PivotTables(TableName) 
OrderValue = Range("OrderingBoxValue").Value 
FieldValue = Range("SortingBoxValue").Value 
MonthValue = Range("MonthInt").Value 

If OrderValue = "Ascendant" Then 
    OrderSort = xlAscending 
ElseIf OrderValue = "Descendant" Then 
    OrderSort = xlDescending 
End If 

If MonthValue = 0 Then 
    ActiveSheet.PivotTables(TableName).PivotFields("No Marchand").AutoSort OrderSort _ 
    , FieldValue 
Else 
    ActiveSheet.PivotTables(TableName).PivotFields("No Marchand").AutoSort OrderSort _ 
    , FieldValue, ActiveSheet.PivotTables(TableName).PivotColumnAxis. _ 
    PivotLines(MonthValue), 1 
End If 
End Sub 

基本上,我鏈接的組合框到另一個片單元和I調用上ComboBox_Change小組。

顯然,如果有人認爲他們有更高效或整體更好的解決方案,我會很高興看到它。我對VBA相當陌生,所以我確信我的代碼可以改進。

相關問題