2013-05-28 15 views
0

我遇到问题(使用VBA与Excel 07),其中我的代码在运行时长度过慢循环。我95%确定这种放缓是由于我正在写入许多不同的单元而不是一个块。Excel VBA:由单独写入单元造成的代码挂起(如何在不连续时写入块)

但是,我不知道如何解决这个问题,因为我需要写入的大部分单元格都是非连续的和非连续的。采取以下例如:

ActiveSheet.Range("b2").Value = Sheet6.Cells(regionMembers(i), 2) 
    ActiveSheet.Range("j4").Value = Sheet6.Cells(regionMembers(i), 4) 
    ActiveSheet.Range("e6").Value = Sheet6.Cells(regionMembers(i), 5) 
    ActiveSheet.Range("d22").Value = Sheet6.Cells(regionMembers(i), 6) 
    ActiveSheet.Range("d23").Value = Sheet6.Cells(regionMembers(i), 7) 

这是需要被写入到细胞的一小部分(总是约150每个环路和环路是阵列regionMembers的程度(),其中,区域会员可以容纳40-50个值)。

有什么办法让我将sheet6上的值写入变量数组,然后将其粘贴到一个块中的活动表单中?我可以将范围设置为(“A1”,“A100”),然后将所有想要粘贴的数值存储在数组中,然后执行如下操作:

myRange.Value = myArray 

但我不知道如何做到这一点,当范围是非连续的。

任何帮助,将不胜感激。

+0

您是否关闭了计算并显示此更新? – RBarryYoung

+0

你(和拔示巴)都是对的......计算转向解决了问题!谢谢 –

回答

2

这本应该不是问题,但您可能需要优化一些过程。我想尝试的宏观期间切换计算关闭(如果该逻辑可以让你):

Application.Calculation = xlCalculationManual 

然后再接通之后再次

Application.Calculation = xlCalculationAutomatic 

不能分配非连续范围到一个值:myRange.Value = myArray只适用于连续的范围。 (基础变体myArray不支持非连续性)。

+0

哇,我关闭了ScreenUpdating&DisplayAlerts,但计算留在xlCalculationAutomatic ....上,将其更改为xlCalculationManual在子时间段内发生了显着差异并修复了问题。 谢谢! –