使用.Offset和.Resize的VBA问题

时间:2017-02-07 22:22:35

标签: excel vba excel-vba

我正在复制一个VBA脚本,用于将4个类似数据的标签整合到一个标签中。在复制/粘贴部分遇到一点麻烦,因为此代码忽略了Col A上的空白单元格。我试图通过使用代码来找到基于Col C的范围,然后抵消结果范围以添加回Col A和Col B.虽然它并没有真正起作用,但我不确定如何继续。

coopy + paste的原始脚本:

 'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
    Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536, 1).End(xlUp).Resize(, colCount))

我的修改:

'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
    Set rng = sht.Range(sht.Cells(2, 3), sht.Cells(65536, 3).End(xlUp).Resize(, colCount))
    Set rng = rng.Offset(-2,).Resize(,2)

数据看起来像这样。我想要复制到C24,但由于Col A中的空白单元格,脚本仅复制到C15。

enter link description here enter image description here

1 个答案:

答案 0 :(得分:0)

你有:

Set rng = sht.Range(sht.Cells(2, 3), sht.Cells(65536, 3).End(xlUp).Resize(, colCount))
Set rng = rng.Offset(-2,).Resize(,2)

rng的左上角单元格为(2,3)或A1表示法中的C2,然后偏移(-2,0),左上角单元格为(0,3) 。整个工作表中的左上角单元格始终为(1,1),因此任何小于1的行或列索引都是错误。

当你试图按列偏移时,你可能想要(假设colCount设置正确 - 它看起来应该等于3):

Set rng = sht.Range(sht.Cells(2, 3), sht.Cells(65536, 3).End(xlUp))
Set rng = rng.Offset(0, -2).Resize(, colCount)

我已将行偏移量指定为0而不是将其留空,因为对我来说,它更容易阅读,但其他人可能更喜欢Offset(, -2)。调整大小的方式不同,因此我们需要将行参数留空一个