我有来自多个工作表的数据,需要根据某些源文件名聚合到多个工作表。我的所有数据都存储在源A16:C115中。我想将这些数据汇总到适当的工作表中,堆叠数据(即设置1- A1:C100,设置2- A101,C200)。这个数据大小可以在工作簿之间变化,这就是我使用Cells和offset / rows / col计数器的原因。
'dest: name of worksheet for data to be pasted into
'src: data source worksheet
'offset: current count of data sources that have been pasted, indexed 0
'rows: row count to be pasted
'col: column count to be pasted
Sub addTrend(dest As Variant, src As Worksheet, offset As Integer, rows As Integer, col As Integer)
Debug.Print CStr(dest), offset, rows, col
src.Range(Cells(16, 1), Cells(15 + rows, col)).Copy (Worksheets(CStr(dest)).Range(Cells((offset * rows) + 1, 1), Cells((offset + 1) * rows, col)))
End Sub
此代码的结果是没有任何内容粘贴到目标工作表中。由于以下原因,我很确定我的代码中的错误是在复制/粘贴行中。如上所述,我觉得这个复制和粘贴功能是为了完成所需的行为而编写的,但也许我错过了一些东西。有什么想法吗?
复制/粘贴线路尝试无效:
src.Range(Cells(16, 1), Cells(15 + rows, col)).Copy Worksheets(CStr(dest)).Range("A" & (offset * rows) + 1)
测试:
我已经测试(未显示)可以找到工作表dest(迭代所有打开的工作表并比较名称)。我已经测试过,也找到了源工作表(通过写入单元格)。偏移量正确计数,行/列是合适的。
以下是调试打印行的片段:
dapSNVHeight 11 100 3
dapSNVHeight 12 100 3
dapSNVHeight 13 100 3
detAvgPeakHeight 0 100 3
detAvgPeakHeight 1 100 3
detAvgPeakHeight 2 100 3
destiation,当前偏移量,行数和列数。
编辑/添加:
调用循环:
For Each trendSet In trendSets
If InStr(ws.name, trendSet) Then
index = findIndex(setIndex, CStr(trendSet), setSize)
addTrend trendSet, ws, setCounter(index), 100, 3
setCounter(index) = setCounter(index) + 1
End If
Next trendSet
另外,指出它是复制/粘贴功能。在Debug.Print
通话后拨打src.range.copy
不会打印任何内容。所以也许第一次复制/粘贴是挂起的。
分辨率:
src.Range(src.Cells(srcRow + 1, 1), src.Cells(srcRow + rows, col)).Copy Worksheets(dest).Range(Worksheets(dest).Cells(cRow + 1, 1), Worksheets(dest).Cells(cRow + rows, col))
答案 0 :(得分:1)
好的,我之所以说它可能不是你的问题的原因是因为如果一个问题导致RTE 1004(我认为)。如果src
未激活,则需要使用工作表参考限定所有范围(导致错误的原因,引用两个工作表的范围)。
src.Range(src.Cells(16, 1), src.Cells(15 + rows, col)).Copy Worksheets(CStr(dest)).Range("A" & (offset * rows) + 1)