データセットを実行し、呼び出しC1の値と一致しないすべての行を削除するはずの次のコードを記述しました。私の元のコードでは、行ごとに削除され、コードは非常に遅かったので、今はすべての値をバリアントに追加し、最後にすべてのセルを削除しようとしています。これは可能ですか?バリアントに複数の値を格納し、サブの末尾にある行を削除します
Sub FixData()
Dim wbFeeReport As Workbook
Dim wsData As Worksheet
Dim wsData2 As Worksheet
Dim FrRngCount As Range
Dim x As Long
Dim y As Long
Dim varRows As Variant
Set wbFeeReport = ThisWorkbook
Set wsData = wbFeeReport.Worksheets("Data")
Set wsData2 = wbFeeReport.Worksheets("Data2")
Set FrRngCount = wsData.Range("D:D")
y = Application.WorksheetFunction.CountA(FrRngCount)
For x = y To 2 Step -1
If wsData.Range("J" & x).Value <> wsData2.Range("C1").Value Then
varRows = x
Else
wsData.Range("AF" & x).Value = wsData.Range("J" & x).Value
End If
Next x
wsData.Rows(varRows).EntireRow.Delete
End Sub
コードはループを通過するたびにバリアントが上書きされるので、コードは最後の行のみを削除します。バリアント内のすべての値をどのように保存し、最後に不要な行を削除するかについてのご提案ですか?
ありがとうございました!
のすべてを収集するために[連合方法](https://msdn.microsoft.com/en-us/library/office/ff834621.aspx)を使用します(Rangeオブジェクト)(https://msdn.microsoft.com/en-us/library/office/ff838238.aspx)に移動し、 'rng.entirerow.delete'を使用します。 – Jeeped