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

时间:2015-07-13 14:18:57

标签: excel vba excel-vba

我正在创建一个在多个工作簿之间复制数据的宏。某些代码段只需要在特定情况下运行。问题是,无论代码是否运行,其后的代码总是需要运行。例如:

'
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不理想。所以请不要给我讲课。

2 个答案:

答案 0 :(得分:1)

调整代码使得只有那些不会一直运行的部分(在if语句中)在如果结束如果之间是这样的:

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

Do some code

如果这不起作用(传输组件总是被执行)那么很可能是你的条件陈述有问题 - 它们总是正确的

编辑:

只是做了一点搜索并检查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

source

答案 1 :(得分:0)

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

MyCell