还有其他更快的方法吗
-
06-07-2019 - |
题
下面的代码执行以下操作:它获取一个范围,然后在范围内查找不同的值、 并将它们存储在 d_distinct 数组中,同时为每个不同的值创建不同的颜色,然后使用 Excel.FormatCondition 为范围着色...(我当前的范围是A1:HM232)
for (int t = 0; t < d_distinct.Length; t++ )
{
Excel.FormatCondition cond =
(Excel.FormatCondition)range.FormatConditions.Add(
Excel.XlFormatConditionType.xlCellValue,
Excel.XlFormatConditionOperator.xlEqual,
"="+d_distinct[t],
mis, mis, mis, mis, mis);
cond.Interior.PatternColorIndex =
Excel.Constants.xlAutomatic;
cond.Interior.TintAndShade = 0;
cond.Interior.Color = ColorTranslator.ToWin32(c[t]);
cond.StopIfTrue = false;
}
但这工作太慢了......用户将不得不坐下来等待大约一分钟......从那时起我就用这种方式做到了这一点,否则如果我用一行代码来做到这一点,只需执行此操作(颜色速度惊人地快)
range.FormatConditions.AddColorScale(3);
我无法要求电池的颜色......(我可以在一个范围内有十多个不同的值)
你能帮助我让我的第一种方法更快吗?提前致谢!
解决方案
尝试在代码运行时关闭屏幕更新,然后再将其重新打开。在 VBA 中,这将是:
Application.ScreenUpdating = False
// do stuff
Application.ScreenUpdating = True
由于您没有使用VBA,请尝试 http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel._application.screenupdating(office.11).aspx 寻求指导
不隶属于 StackOverflow