0
在Excel中创建伪甘特图项目计划。对于没有MS Project的员工,我遇到了以下问题。 Excel表格变得非常缓慢。我不确定它是由我使用的VBA函数还是条件格式引起的。VBA使Excel缓慢?或条件格式?
该表以任务细节开始 任务,持续时间,taskStart,任务结束。
并继续包含字段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自定义函数中的条件格式,但它们只返回值并且不能更改单元格颜色等。
问:
- 是它的自定义函数或条件格式是什么让Excel的慢?
- 如何为VBA中的单元格着色?
- 我应该宁愿将日历单元格留空,让VBA在没有解决方法的情况下将着色和内容写入单元格?
- 如果你的答案是“是”。怎么做?
感谢收听。
旁注:对不起,不能发布的截图,但(防垃圾邮件过滤器)
你已经停止ScreenUpdating了吗? Application.ScreenUpdating = False,并且如果在每次更新设置后都不需要重新计算EnableCalculation = False – rene 2012-01-03 12:27:48
请尝试和[删除所有自定义格式化](http://www.vbaexpress.com/kb/getarticle.php ?kb_id = 548)而不改变你的代码的其余部分,看看它是否更好。如果是这样,请考虑使用vba更改单元格的格式而不是CF. – JMax 2012-01-03 13:00:03
条件格式是非常有效的,因此罪魁祸首可能是你的UDF - 你有多少次使用它? (JMax的建议非常合乎逻辑) – brettdj 2012-01-08 04:03:01