簡體   English   中英

Excel 2013文本框VBA出現1004錯誤

[英]1004 error on excel 2013 textbox VBA

我想運行一個簡單的腳本,我會進一步增強它。 昨天我在自動過濾器上也有類似的工作,但是我放錯了位置,並且很難找到解決方案。 我想使用活動的x文本框來過濾數據透視表。 我曾嘗試更改模塊的位置以及使用acitveworkbook和activesheet,但我似乎都返回了1004錯誤。 我可以確認頁面和數據透視表都在頁面上。 這是辦公室13。

Private Sub TextBox1_Change()


ActiveSheet.PivotTables("PivotTable2").PivotFields("Agency").ClearAllFilters
ActiveSheet.PivotTables("PivotTable2").PivotFields("Agency").CurrentPage = ActiveSheet.TextBox1.Text

End Sub

我相信昨天的解決方案與激活文本框有關。 但是不能完全記住。

任何幫助將非常感激。

您的子例程必須放在工作表的代碼模塊中。 相信該錯誤正在發生,因為_Change事件在每次擊鍵時都會觸發,因此很可能第一個擊鍵會創建一個TextBox1.Text值,該值與該PivotField任何PivotItems 對應。

你可以做這樣的事情。 使用_GotFocus事件提供輸入提示。 這子程序然后含蓄地提高TextBox1_Change通過分配輸入值到事件TextBox1.Text

Private Sub TextBox1_GotFocus()
    Dim str$
    str = InputBox("Please enter a value", "Pivot Field filter")
    TextBox1.Text = str
End Sub

我暫時禁用錯誤處理( On Error Resume Next )來分配過濾器。 然后,我檢查是否發生了錯誤,並且您可以(可選)通知用戶他們提供了無效的條件。

Sub TextBox1_Change()
    Dim pt As PivotTable
    Dim fld As PivotField

    Set pt = PivotTables("PivotTable2") 'Modify as needed
    Set fld = pt.PivotFields("Agency")

    With fld
        .ClearAllFilters
        On Error Resume Next
        .CurrentPage = TextBox1.Text
        .Orientation = xlPageField
        .Position = 1
        If Err.Number <> 0 Then
            'you may want to include a prompt here, i.e.:
            MsgBox "Invalid Filter!", vbInformation
            Exit Sub
        End If
        On Error GoTo 0
    End With
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM