我正在开发Excel Makro。 想知道,我如何使用不同的数据重复一些代码行,而无需复制和粘贴。
期待您的回答:) 这是我目前的代码:
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
答案 0 :(得分: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
答案 1 :(得分: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所说 - 你可能只需要数据功能区上的删除重复按钮。