首页 文章

复制并粘贴工作表之间的动态范围

提问于
浏览
0

我有来自多个工作表的数据,需要根据某些源文件名聚合到多个工作表 . 我的所有数据都存储在源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

另外,指出它是复制/粘贴功能 . 在 src.range.copy 调用后调用 Debug.Print 不会打印任何内容 . 所以也许第一次复制/粘贴是挂起的 .

解析度:

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))

1 回答

  • 1

    好吧,我说它可能不是你的问题的原因是因为如果一个问题导致RTE 1004(我认为) . 如果 src 未激活(这是导致错误的原因,引用两张纸的范围),您需要使用工作表参考限定所有范围 .

    src.Range(src.Cells(16, 1), src.Cells(15 + rows, col)).Copy Worksheets(CStr(dest)).Range("A" & (offset * rows) + 1)
    

相关问题