我正在尝试使用 VBA 根据用户从单元格条目中的选择自动更新数据透视表过滤器。我相信一切正常,直到第 11 行显示“Field.CurrentPage = NewCat”。这就是问题所在。该代码按照上一行中的说明清除了我的过滤器,但是当它到达指示它选择新数据的代码时,我收到错误消息“运行时错误 1004。无法设置 PivotField 类的 CurrentPage 属性”。
下面是我到目前为止所拥有的,我只是在寻找如何修改第 11 行,以便它选择要在数据透视表过滤器中使用的新输入。我很感激我能得到的任何帮助。我对 vba 很陌生,并且为此苦苦挣扎了太久!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("C3:C4")) Is Nothing Then Exit Sub
Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat As String
Set pt = Worksheets("Pivot").PivotTables("PivotTable1")
Set Field = pt.PivotFields("[Range].[Site].[Site]")
NewCat = Worksheets("Interface").Range("C3").Value
With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
End With
End Sub
Run Code Online (Sandbox Code Playgroud) 我在“ThisOutlookSession”模块中编写了代码。
Application_ItemSend 有效,发送邮件时触发事件。
当我打开 Outlook 后手动启动 Application_Startup 时,Application_Startup 就会运行,而不是在启动时运行。
将子变量设置为私有没有什么区别 - 将变量设置为公共也没有什么区别。
我在信任中心的“启用所有宏”上有宏设置。
我在运行 Windows 10 企业版的电脑上使用 Outlook 2016。
我对这个问题进行了深入研究。
Option Explicit
Dim add_str As String
Public Sub Application_Startup()
Dim olNs As Outlook.NameSpace
Dim Folder As Outlook.MAPIFolder
Dim SubFolder As Outlook.MAPIFolder
Dim Item As Object
Set olNs = Application.GetNamespace("MAPI")
Set Folder = olNs.Folders("albrobin@workmail.com").Folders("WORKFLOW").Folders("Reporting")
For Each SubFolder In Folder.Folders
If SubFolder.items.Restrict("[UnRead] = True").Count > 0 Then
For Each Item In SubFolder.items
Item.UnRead = False
Next
End If
Next
End Sub
Public …Run Code Online (Sandbox Code Playgroud)