Vba 利用Excel对象快速设置数字格式

Vba 利用Excel对象快速设置数字格式,vba,excel,number-formatting,Vba,Excel,Number Formatting,我正在将12000条46列的记录作为生产报告写入excel文件。工作表充满数据时不显示 以前的StackOverflow信息教我使用对象数组将值放入速度范围。我希望这也能对值进行格式化 代码剪报: objExcel.Calculation = XlCalculation.xlCalculationManual objExcel.ScreenUpdating = False dcel = objWS.Range(objWS.Cells(rowdatastart, 1), objWS.Cells(

我正在将12000条46列的记录作为生产报告写入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包含诸如“h:mma/p”等字符串,用于将时间显示为“12:23a”,以及“0.00”等字符串,用于将数字显示为“53/25”

“dcel.value=aobj”需要半秒钟。 “dcel.NumberFormat=bobj”需要38秒


对我遗漏/误解的内容有什么建议吗?我希望7秒的报告(启动excel、编写、保存、关闭excel)不要花费45秒,因为我希望数字/日期/时间按我的选择显示。

如果每列都有自己的格式,请尝试对整列进行格式化。此外,对于每个列,不要使用数组,如果格式相同,则可以只使用单个字符串

对每一列都这样做


请尝试并提供反馈。

如果每一列都有自己的格式,请尝试为每一列设置格式。此外,对于每个列,不要使用数组,如果格式相同,则可以只使用单个字符串

对每一列都这样做


请尝试并提供反馈。

经过更多的实验,我找到了与S Meaden相同的解决方案。由于46列中只有14列不是“一般”,我收集了日期、时间和2位十进制数字的列号。循环遍历其中的每一个,为12000条记录和1列生成一个范围,设置格式。对于所有列,这大约需要半秒钟

奇怪的是,使用46个对象数组设置一行46个单元格所需的时间比一列中12000个单元格所需的时间要长得多,但这就是问题所在


谢谢大家。

经过更多的实验,我找到了与S Meaden相同的解决方案。由于46列中只有14列不是“一般”,我收集了日期、时间和2位十进制数字的列号。循环遍历其中的每一个,为12000条记录和1列生成一个范围,设置格式。对于所有列,这大约需要半秒钟

奇怪的是,使用46个对象数组设置一行46个单元格所需的时间比一列中12000个单元格所需的时间要长得多,但这就是问题所在


谢谢大家。

不适用于格式。也许您可以创建范围对象,这样所有需要某种
bobj
格式的单元格都可以一次格式化;或者,您可以使用条件格式一次性设置整个范围。因为您的代码正在工作,所以这可能是最好的,因为它不适用于格式。也许您可以创建范围对象,这样所有需要某种
bobj
格式的单元格都可以一次格式化;或者,您可以使用条件格式一次性设置整个范围。因为您的代码正在工作,所以这可能是最好的选择