如果两个单元格不等于某个值,如何跳过一段代码?

我正在制作一个在多个工作簿之间复制数据的macros。 代码的某个部分只需要在特定的情况下运行。 问题是,不pipe代码是否运行,它后面的代码总是需要运行。 例如:

' If Range("B26").Value <> "#N/A" And Range("D26").Value <> "#N/A" Then ' ' Transfers Component Data ' Range("B28").Select Selection.Copy Windows("Form.xls").Activate Range("O61:P61").Select ActiveSheet.Paste Range("I71:J71").Select ActiveCell.FormulaR1C1 = "10.00%" Range("A72:P72").Select Range("A1:A21").Select Windows("Transfer Template.xlsm").Activate Range("A1").Select End If ' ' Final_Transfer_Macro Macro ' Range("B1").Select Selection.Copy Windows("Form.xls").Activate Range("F7:I7").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= xlNone, SkipBlanks:=False, Transpose:=False Range("A1:A21").Select Windows("Transfer Template.xlsm").Activate Range("A1").Select 

“传输组件数据”部分是不会始终运行的部分。 但是,前后的一切将永远运行。

另外,我不在乎,如果select慢,或者。 .Activate并不理想。 所以请不要讲课。

调整使用代码,以便只有不会总是运行的部分是(如果语句)之间如果结束如果像这样:

 If condition Then Do some Transfers Component code (if condition is true) End If Do some code 

如果这不起作用(转移组件总是被执行),那么它很可能是你的条件语句的一个问题 – 它们总是正确的

编辑:

只是做了一点search,并检查N / A,你需要做两个条件检查。 一个检查单元格的值是否有错误,另一个是检查单元格的值是否相等

 If Not (IsError(Range("B26").Value) AND IsError(Range("D26").Value)) Then If Range("B26").Value <> CVErr(xlErrNA) And Range("D26").Value <> CVErr(xlErrNA) Then Transfers Code Here End If End If 

资源

如果我明白你在问什么。 只要使用一个if语句。

 ' ' Transfers Component Data ' If Range("B28").Value + Range("C28").Value <> someValue then Range("B28").Select Selection.Copy Windows("Form.xls").Activate Range("O61:P61").Select ActiveSheet.Paste Range("I71:J71").Select ActiveCell.FormulaR1C1 = "10.00%" Range("A72:P72").Select Range("A1:A21").Select Windows("Transfer Template.xlsm").Activate Range("A1").Select End if End if ' ' Final_Transfer_Macro Macro '