我正在创建一个在多个工作簿之间复制数据的宏。某些代码段只需要在特定情况下运行。问题是,无论代码是否运行,其后的代码总是需要运行。例如:
'
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
不理想。所以请不要给我讲课。
答案 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
答案 1 :(得分:0)
如果我明白你在问什么。只需使用if语句。
MyCell