粘贴数组包含多个范围

时间:2017-10-17 17:22:10

标签: excel vba

我有一本工作簿。此工作簿上的其中一个工作表具有各种位置的数据,每次发送更新时,这些数据当前必须手动传输到此工作簿的新版本(范围和格式相同)。为了缓解这种情况,我们将新版本的工作簿存储在一个网站上,并提醒该组使用此宏下载它,该宏也应该复制所有数据:

Sub DownloadTimecard()
'On Error GoTo 1
Dim TotalRanges  As Integer: TotalRanges = 17
ReDim Ranges(TotalRanges) As Range
Dim i As Integer

'assign all the individual ranges to an array
Set Ranges(1) = Range("EmployeeName")
Set Ranges(2) = Range("PayPeriodDate")
Set Ranges(3) = Range("C7:Z18")
Set Ranges(4) = Range("AD7:AG18")
Set Ranges(5) = Range("F20:F21")
Set Ranges(6) = Range("I20:I21")
Set Ranges(7) = Range("L20:L21")
Set Ranges(8) = Range("O20:O21")
Set Ranges(9) = Range("R20:R21")
Set Ranges(10) = Range("U20:U21")
Set Ranges(11) = Range("X20:X21")
Set Ranges(12) = Range("AD20:AG21")
Set Ranges(13) = Range("C27:Z28")
Set Ranges(14) = Range("C34:Z36")
Set Ranges(15) = Range("B40")
Set Ranges(16) = Range("Q44")
Set Ranges(17) = Range("AC44")

Some code that downloads and opens the new workbook from a website

' paste the data
For i = 1 To TotalRanges
    Range(Ranges(i).Address) = Ranges(i).Value
Next

'1      Exit Sub
End Sub

问题是, i 点击大约4时的宏错误。我说的是因为如果你以1以外的数字开始 i ,那么它会出错不同点。我还是VBA的新手,但我认为Excel并不喜欢变量Ranges(i)的尺寸如此奇怪......如果范围变得更大,似乎没关系 i 增加,但一旦变小,就会变得怪异。我误解了ReDim吗?

奇怪的是,我可以告诉这段代码将数据放在工作簿中的新工作表上(而不是在新的工作簿上)并且运行正常。任何帮助将不胜感激。

更新:显着缩小了问题。 导致问题的范围中的单元格格式为 Special 。如果我将范围分配修改为仅包含每个问题区域中的一个单元格,则它可以正常工作;一旦我将范围扩展到2个或更多单元格,它就会给我一个不匹配错误。使用格式特殊

有什么问题

0 个答案:

没有答案