2017-06-19 33 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