私は今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
回答:
回答№1は0@BruceWayneは必要なものを正しい方向に指し示しているように思えます - 重複を取り除くこと。
@Apurv Pawarが示しているように、ループを使うことができますが、セルを選択しています(選択しないでセルを参照することができます)。
もう1つの方法は、セルを削除する手順と、ワークブック、ワークシート、およびセルを表示する別の手順を示すことです。
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)
値が一致すると、渡されたセルの下のセルが表示され、2つのセルの幅にサイズ変更され、2つのセルの内容が消去されます。
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氏によると、おそらく、データリボンには重複削除ボタンが必要です。
回答№2の場合は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