在电子表格中自动添加大量链接时出现性能问题

我正在使用此代码段将链接到另一个工作簿到我自己的:

Sub legg_inn_lekkjer() Dim i As Long Call deaktiver For i = 0 To 740 Loktider.Range("C4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C6" Loktider.Range("D4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C5" Loktider.Range("E4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C16" Loktider.Range("F4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C15" Loktider.Range("G4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C6" Loktider.Range("H4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C5" Loktider.Range("I4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C16" Loktider.Range("J4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C15" Next Call reaktiver End Sub Sub deaktiver() Application.EnableEvents = False Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.Calculation = xlCalculationManual ' ActiveSheet.DisplayPageBreaks = True 'note this is a sheet-level setting End Sub Sub reaktiver() Application.EnableEvents = True Application.ScreenUpdating = True Application.DisplayStatusBar = True Application.Calculation = xlCalculationAutomatic ' ActiveSheet.DisplayPageBreaks = True 'note this is a sheet-level setting End Sub 

它工作正常,但需要相当长的一段时间才能运行。 这可能不会是一个问题,因为我不需要经常更新链接地址,但我仍然想知道是否有更有效的方法来做到这一点,使用某种相对引用来input地址每一列都是一次? 相当多的谷歌search表示“不”,但我认为这不会受到伤害的要求。

我可以想象它会非常慢,你的for循环在741次迭代中input10个单独的单元值,所以单独完成大约7.4K个单元input。

您可以在数组中创build单元格值,然后将该数组粘贴到工作簿中,或者更简单地在顶部行中input所需的公式,并根据需要填充。

作为一个例子,你可以取代:

  For i = 0 To 740 Loktider.Range("C4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C6" Loktider.Range("D4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C5" Loktider.Range("E4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C16" Loktider.Range("F4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!R" & CStr(11 + i) & "C15" Loktider.Range("G4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C6" Loktider.Range("H4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C5" Loktider.Range("I4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C16" Loktider.Range("J4").Offset(i, 0) = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!R" & CStr(11 + i) & "C15" Next 

附:

编辑 – R1C1参考系统似乎使用绝对值,而是添加标准单元格引用

 with Loktider .Range("C4") = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!F11" .Range("D4") = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!E11" .Range("E4") = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!P11" .Range("F4") = "='[Simulering Arbeidsplan Ovn 3 28h.xls]Lokklegging'!O11" .Range("G4") = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!F11" .Range("H4") = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!E11" .Range("I4") = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!P11" .Range("J4") = "='[Simulering Arbeidsplan Ovn 4 30h.xls]Lokklegging'!O11" Range(.Cells(4,3),.Cells(744,10)).FillDown End With 

这是在几个假设, Loktider是一个worksheetvariables,你已经创build,你会使用该特定的范围,你硬编码你的循环计数器。