修正macros码以显示不同的范围

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

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列中。我尝试用下面的代码replace前两行代码…

 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 

我不太确定接下来要做什么

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

目的:将L1和N1中的值连接成一个string,并将其放入列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语句来处理单元格来解决。

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

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