修复宏代码以显示不同的范围

时间:2015-07-13 01:32:52

标签: excel vba excel-vba

我相信对于大多数人来说这是一个相当简单的问题,但我有这个代码

With ActiveSheet
    .Cells(Rows.Count, "B").End(xlUp).Offset(1, 0) = .Range("L1").Value2

这允许我获取L1的内容并将其作为静态值粘贴到B列的下一个可用单元格中。我现在想要将此代码用于不同的范围。"该范围是两个单元格的文本组合成新单元格。我使用以下代码来做到这一点

With ActiveCell
    .Formula = "=CONCATENATE(L1,N1)"
    .Cells = .Value
    .WrapText = False

除了它总是将新值发布到活动单元格中,并且它不会注册该值应该粘贴到下一个可用单元格列A中。我已尝试用以下代码替换代码的前两行。 ..

With ActiveSheet
    .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = .Range("L1&N1").Value2

With ActiveSheet
    .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = .Range("=CONCATENATE(L1,N1)").Value2

With ActiveSheet
    .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = .Formula = "=CONCATENATE(L1,N1)".Value2

我不太确定下一步该尝试什么

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,但目前正在打破一些语法约定。

目的:将L1和N1中的值连接成一个字符串,并将其放入A列中的下一个可用单元格中。

第一个应该写得更接近:

With ActiveSheet
   .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = .Range("L1").Value2 & .Range("N1").Value2
end with

跳过第二个,第三个应该是:

With ActiveSheet
   .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Formula = "=CONCATENATE(L1,N1)"
end with
'or,
With ActiveSheet
   .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = _
      application.evaluate("CONCATENATE(L1,N1)")
end with

在后两个例子中,第一个将实际公式放入单元格,第二个评估公式将返回的结果并将结果放入单元格。

可以通过引用要在嵌套With...End With statement中处理的单元格来解决其他单元格属性。

With ActiveSheet
    with .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        .value = application.evaluate("CONCATENATE(L1,N1)")
        .wraptext = false
    end with
end with

再看一下我为hte提供的链接......结束文档。上面的内容从ActiveSheet开始,然后是A列中的下一个空白单元格。在此秒内应用的所有内容With ... End With将发生在该单元格和该单元格上。