VBA让Excel变慢了吗?还是条件格式化?

时间:2012-01-03 12:16:18

标签: excel vba

在Excel中创建伪甘特图项目计划。对于那些没有MS Project的员工,我遇到了以下问题。 Excel表格变得非常迟缓。我不确定它是否是由我使用的VBA函数或条件格式引起的。

该表以任务详细信息开头 任务,持续时间,任务启动,任务结束

并继续使用日历部分,包括字段weekStart和weekEnd。 在每个日历单元格中都是一个公式

=PseudoGantt(task;duration;taskStart;taskEnd;weekStart;weekEnd)

宏如下所示:

Function PseudoGantt(taskName As String, taskLength As Integer, taskStart As Date, taskEnd As Date, weekStart As Date, weekEnd As Date) As String
    PseudoGantt = Switch( _
        taskName = "", "empty", _
        taskStart = taskEnd And taskStart >= weekStart And taskEnd <= weekEnd, "milestone", _
        taskLength = 0 And taskStart >= weekStart And taskStart < weekEnd, "summarytask", _
        taskLength = 0 And taskEnd <= weekEnd And taskEnd > weekStart, "summarytask", _
        taskLength = 0 And taskStart < weekStart And taskEnd > weekEnd, "summarytask", _
        taskStart >= weekStart And taskStart < weekEnd, "start", _
        taskEnd <= weekEnd And taskEnd > weekStart, "end", _
        taskStart < weekStart And taskEnd > weekEnd, "continue", _
        True, "empty" _
    )
End Function

这将填充单元格中的甘特图状态,我将其用作条件格式的条件,以便适当地为单元格着色。

这样可行,但正如我所说,它使Excel非常慢。

我考虑过更换VBA自定义函数中的条件格式,但它们只返回值,不能更改单元格颜色等。

问题:

  1. 自定义函数或条件格式是什么让Excel变慢?
  2. 如何从VBA中为单元格着色?
  3. 我是否应该将日历单元格保留为空,让VBA进行着色而不使用变通方法将单元格内容写入单元格?
  4. 如果您对3.的回答是“是”。怎么做?
  5. 感谢收听。

    旁注:抱歉,无法发布截图(反垃圾邮件过滤器)

1 个答案:

答案 0 :(得分:0)

我曾经用动态图表创建了动态甘特图,您可以获取开始日期并计算持续时间,然后制作动态图表。以下是the instructions