이 일을 하는 다른 더 빠른 방법이 있나요
-
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;
}
그런데 작동이 너무 느려요...사용자는 약 1분 동안 앉아서 기다려야 합니다...그 이후로 나는 이 방법으로 이 작업을 수행했습니다. 그렇지 않으면 단순히 이 작업을 수행하는 한 줄의 코드로 수행합니다(색상이 놀라울 정도로 빠릅니다).
range.FormatConditions.AddColorScale(3);
셀 색상은 문의 드릴 수 없습니다...(한 범위에는 10개 이상의 고유한 값이 있을 수 있습니다)
첫 번째 방법이 더 빠르게 작동하도록 도와주실 수 있나요?미리 감사드립니다!
해결책
코드가 실행되는 동안 화면 업데이트를 끄고 나중에 다시 켜십시오. 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