VBA自动化

时间:2016-06-01 15:55:05

标签: vba excel-vba excel

我对这部分代码遇到了一些麻烦,我确信有一种非常简单的方法可以在一行中总结这个动作

If Workbooks("A.xlsm").Sheets("1").Cells(i, 14).Value > 100000 _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(2, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(3, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(4, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(5, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(6, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(7, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(8, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(9, 5) _
And Workbooks("A.xlsm").Sheets("1").Cells(i, 6) <> Workbooks("A.xlsm").Sheets("B").Cells(10, 5) _
Then ...

唯一变化的变量是每行末尾的行号 在此先感谢您的帮助,我确信有一种简单的方法可以实现自动化

2 个答案:

答案 0 :(得分:2)

首先,我会使用with块来停止重复输入。然后使用Match()查看该值是否存在于该范围内:

With Workbooks("A.xlsm")
If .Sheets("1").Cells(i, 14).Value > 100000 _
    And IsError(Application.Match(.Sheets("1").Cells(i, 6), .Sheets("B").Range(.Sheets("B").Cells(2, 5), .Sheets("B").Cells(10, 5)), 0)) Then

    'the rest of your code

End With

答案 1 :(得分:0)

您的代码示例中可能有错误。 如果你没有,那么你正在创建一堆And语句来查看多行,5个单元格寻找匹配。

在这种情况下,每个多行,5个单元格必须相等,并匹配您正在比较的单个(i,6)值。

如果这段代码是正确的,那么你只需要进行一次检查,就像它通过或失败一样,所有其他的都是&#34;和&#34;线。