【发布时间】:2017-02-08 06:54:23
【问题描述】:
我正在复制一个 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。
【问题讨论】:
-
如果您删除
.Resize(, colCount),它看起来应该可以工作。colCount是如何定义的? -
你有一行代码使用了
Set。你复制它并删除Set。虽然rng可能是Variant,并且您首先在引用上下文中使用它,然后有点混淆地分配rng.Value = rng.Offset(-2,).Resize(,2).Value,但您更有可能应该put theSetback。 -
rng = rng.Offset(-2,).Resize(,2)应该是Set rng = rng.Offset(-2,).Resize(,2)。您需要SetVBA 对象。 -
我已经尝试过了,它给了我一个编译错误:该行的语法错误 Set rng = rng.Offset(-2,).Resize(,2)
-
我是说您在问题中提出的问题已解决(并且确实有资格作为错字)。您现在遇到的问题是另一个问题,它来自您的程序逻辑,只有您了解。在您的第一次分配之后,
rng包含一个不能向上移动两行的范围,这是因为它从A2开始。