2017-06-19 34 views
0

我现在正在开发一个Excel Makro。 想知道,我可以如何使用不同的数据重复一些代码行,而无需复制和粘贴。用VBA中的不同数据重复一个命令

期待您的回答:) 这是我当前的代码:

Sub deleteredundant() 

Windows("Test1.xlsm").Activate 
If Range("A6") = Range("A7") And Range("B6") = Range("B7") Then 
Range("A7:B7").Select 
Selection.ClearContents 
End If 

End Sub 
+3

要重复代码,您需要将其嵌入到每次切换变量的'Loop'中。 – dwirony

+0

我这么认为。但我真的不知道如何实现这种可变开关。 (对不起刚刚学习VBA编程) –

+0

你期望循环通过什么?有几种方法可以完成循环,选择哪一种最有效,取决于你循环的内容。你也可以为'y'循环中的每个x,或者'Do While'循环做一个'... – BruceWayne

回答

0

听起来像@BruceWayne指出你在正确的方向为你需要 - 删除重复。

作为@Apurv Pawar显示你可以使用一个循环,但他选择单元格(如果有任何代码说选择或激活一个单元只是不....你可以参考一个单元格而不选择)。

另一种方法是有一个程序来删除单元格,另一个程序告诉它要查看哪个工作簿,工作表和单元格。

Sub DeleteRedundant(CheckRange As Range) 

    If CheckRange = CheckRange.Offset(1) And CheckRange.Offset(, 1) = CheckRange.Offset(1, 1) Then 
     CheckRange.Offset(1).Resize(, 2).ClearContents 
    End If 

End Sub 

上面的代码将接受传递给它的范围。
它会检查通过的单元等于低于自身细胞:
CheckRange = CheckRange.Offset(1)

它将然后检查细胞传递的单元格的右边等于低于该值:
CheckRange.Offset(, 1) = CheckRange.Offset(1, 1)

如果值匹配它会看通过的单元下面的单元格,调整,为两个单元,宽清除这两个单元格的内容:
CheckRange.Offset(1).Resize(, 2).ClearContents

有了这个过程中,我们可以通过它的各种范围内引用,操作上:

Sub Test() 

    DeleteRedundant Workbooks("Excel Worksheet1.xlsx").Worksheets("Sheet1").Range("A6") 
    DeleteRedundant Workbooks("Excel Worksheet2.xlsx").Worksheets("Sheet2").Range("D5") 

    'Pass every other cell to the procedure in a loop. 
    'So will pass A2, A4, A6 - Cells(2,1), Cells(4,1) and Cells(6,1) 
    Dim x As Long 
    For x = 2 To 20 Step 2 
     DeleteRedundant Workbooks("Excel Worksheet1.xlsx").Worksheets("Sheet1").Cells(x, 1) 
    Next x 

End Sub 

但是,正如@BruceWayne说 - 你可能只需要对数据功能区中的删除重复按钮。

+0

好的,谢谢@Darren Bartrup-Cook和@BruceWayne!我会毫不犹豫地尝试这个! –

+0

@BruceWayne嘿家伙!只是检查ist。删除完美的重复werks。谢谢你的帮助!! –

0

尝试以下。

Sub deleteredundant() 

Windows("Test1.xlsm").Activate 

x = 1 

Do While Range("a" & x).Formula <> "" 

If Range("A" & x) = Range("A" & (x + 1)) And Range("B6" & x) = Range("B7" & (x + 1)) Then 
Rows(x & ":" & x).Select 
With Selection 
.Delete EntireRow 
End With 

End If 
x = x + 1 
Loop 

End Sub