【问题标题】:Visual Basic for Applications - If ... And ... ThenVisual Basic for Applications - If ... And ... Then
【发布时间】:2015-01-16 22:20:48
【问题描述】:

我想说如果在一个单元格(i,2)中包含文本“Lala”,另一个单元格(i,9)包含文本“Active”,它应该复制单元格 3 和 4 的内容.

不幸的是,我的代码不能在第二个条件下工作 - 没有它正在运行。那么谁能告诉我如何正确写呢?

如果有“停用”,则不应复制内容。

If Cells(i, 2) = "Lala" And Cells(i, 9) = "Active" Then         
    Range(ActiveSheet.Cells(i, 3), ActiveSheet.Cells(i, 4)).Select         
    Selection.Copy  

已解决!解决办法是:

If ActiveSheet.Cells(i, 2).Value = "Lala" And ActiveSheet.Cells(i, 9).Value = "Active" Then        
Range(ActiveSheet.Cells(i, 3), ActiveSheet.Cells(i, 4)).Select                    

【问题讨论】:

  • 我只是用一个例子重新编写了你的​​代码,它可以正常工作,即使单元格中的值是用公式计算的。
  • 您的 If 语句有问题。你是什​​么意思“不工作”?当您期望它应该输入它时,它没有输入 If ?
  • 我可能会建议几件事:1) 引用工作表,所以 ActiveSheet.Cells(i,2) 而不是仅仅 Cells(i,2),并使用 value 属性,所以 ActiveSheet.Cells(i,2).Value。但是,如果您从 ActiveSheet 运行宏,则这相当于您当前的代码,因此您可能希望更好地指定“它不工作”的含义。
  • 复制数据后,您要对其进行哪些操作?因为如果您只是要将其“粘贴”到其他地方,则无需复制并粘贴它。您可以只设置目标的值。查看此链接:How to Avoid using select statements。目的地总是一样的吗?如果它发生变化,是什么导致它发生变化,或者它相对去向何方?
  • @matteo NNZ 我刚刚用 ActiveSheet.Cells(i,2).Value 替换了 Cells(i,2) ,现在它可以工作了。谢谢! “它不起作用”是指单元格包含“lala”的内容没有复制到另一个 xlsm 文档中。在我只有 If Cells(i, 2) = "Lala" 之前 - 它有效!但是后来我添加了“And-statement”并且没有任何内容被复制。但就像我上面说的,使用 ActiveSheet.Cells(i,2).Value 它正在工作(内容已被复制)。

标签: vba excel


【解决方案1】:

'试试这个
'如果单元格包含所需数据,则复制范围

If Cells(i, 2).value like "*Lala*" And Cells(i, 9).value like "*Active*" Then         
    Range(ActiveSheet.Cells(i, 3), ActiveSheet.Cells(i, 4)).Copy
End if

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多