VBA-在数据透视表中一次设置多个过滤器,而无需在两者之间进行更新

时间:2019-06-21 08:02:17

标签: excel vba filter pivot

我有一个脚本,可以根据数据自动在数据透视表上设置一些过滤器(隐藏和显示某些文章)。现在脚本运行良好,但是当我有了数据透视图时,它会变得非常慢。我认为后台发生的事情是,我显示/隐藏的每篇文章都重新计算了图表。

是否可以在不更新表格的情况下设置多个过滤器,然后在设置完所有数据透视表和表格后又进行更新?

我考虑过删除图表,设置过滤器,然后重新创建图表。但这会删除我在图表上设置的所有格式,因此我不想走那条路。

public static JFrame f;
public static JTextField jtf;
public static JPanel jp;

public static void creategui()
{

    System.out.println("GUI created.");
    f = new JFrame("Players");
    jp = new JPanel();
    jp.setLayout(new FlowLayout(FlowLayout.LEFT));
    jp.setBackground(Color.GRAY);
    jtf = new JTextField("Reason");
    jtf.setPreferredSize(new Dimension(200,20));
    jtf.setToolTipText("Write the reason here.");
    jp.setSize(new Dimension(200,200));
    f.setLayout(null);
    f.setSize(500,500);
    f.setVisible(true);
    jp.add(jtf);f.add(jp, BorderLayout.CENTER);
    for (final Player p : Bukkit.getOnlinePlayers())
    {
        System.out.println("Looping.");
        final JButton b = new JButton();
        b.setName(p.getName());
        b.setText(p.getName());
        b.setToolTipText("Kick " + b.getText());
        b.setBackground(Color.GREEN);
        b.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (!b.getBackground().equals(Color.RED))
                {
                    Bukkit.getScheduler().runTask(main, new Runnable() {
                        public void run() {
                            Bukkit.getPlayer(b.getText()).kickPlayer(jtf.getText());
                            b.setBackground(Color.RED);
                        }
                    });
                }

            }
        });
        jp.add(b);
        System.out.println("Button added.");
    }
    f.add(jp, BorderLayout.CENTER);

}

任何帮助您更快完成此操作的人将不胜感激。预先感谢!

0 个答案:

没有答案