我正在将具有46列作为生产报告的12,000条记录写入Excel文件。充满数据时不显示工作表。快速设置使用Excel对象的数字格式
上一个StackOverflow信息教会了我如何使用对象数组将数值放入速度范围中。我希望这也可以用于格式化值。
代码剪断:
objExcel.Calculation = XlCalculation.xlCalculationManual
objExcel.ScreenUpdating = False
dcel = objWS.Range(objWS.Cells(rowdatastart, 1), objWS.Cells(rowdataend, nProdReportCol.ProdReportColCount - 2))
dcel.Value = aobj
dcel.NumberFormat = bobj
objExcel.ScreenUpdating = True
objExcel.Calculation = XlCalculation.xlCalculationAutomatic
aobj和BOBJ是适合的范围对象(,)阵列。 bobj包含显示时间为“12:23a”的字符串,如“h:mma/p”,以及显示数字为“53/25”的“0.00”。
“dcel.value = aobj”需要半秒。 “dcel.NumberFormat = bobj”需要38秒。
对于我错过/误解的任何建议?我宁愿7秒钟的报告(开始excel,写,保存,关闭excel)不花45秒,因为我希望数字/日期/时间出现在我选择的位置。
不适用于格式。也许你可以创建范围对象,以便所有需要特定'bobj'格式的单元格可以一次格式化;或者你可以使用条件格式来一次设置整个范围。由于你的代码正在工作,这可能是最好的[代码审查](https://codereview.stackexchange.com/) –