2

範囲を (1 つのシートで) 検索し、選択値を保持する 3 番目のシートに基づいて、選択したセルを (別のシートに) コピーする基本的なマクロを作成しました。i = x to y としてループを使用しましたが、マクロがいくつかの行をスキップしているようです!???! つまり、行 1 から 4 にコピーする有効な値が 4 つある場合、マクロは行 2 と 4 の値のみをコピーします (有効なセル 1 と 3 を削除します)。コードは次のとおりです。

Sub XXXXX()
Dim i As Integer
Dim PasteSheet As Worksheet: Set PasteSheet = Sheets("Sheet1")
Dim CopySheet As Worksheet: Set CopySheet = Sheets("Sheet2")
Dim SearchSheet As Worksheet: Set SearchSheet = Sheets("Sheet3")
Dim LookupID, LookupID_SearchRange, CopyValueID, CopyValueID_Paste As Range

For i = 7 To 2000 'I've also used the (Step 1) option with no success
RowCount = Application.WorksheetFunction.CountA(PasteSheet.Range("A:A")) + 1 'finds the last cell to be used for copy

Set LookupID = CopySheet.Range("A" & i) 'searches all values within column A from row 7 to 2000
Set LookupID_SearchRange = SearchSheet.Range("A:A") ' Seaches if the values from Sheet3 are present in Sheet 1
Set CopyValueID = CopySheet.Range("X" & i) 'counter that follows the same search on A but selects values on X
Set CopyValueID_Paste = PasteSheet.Range("A" & RowCount) 'When it finds the ID, it copies some cell to the last row in Sheet2
      ' Initially  there was an additional RowCount (+1) for CopyValueID. Corrected based on answers for future refrence of the cleaned code.
If Not IsError(Application.Match(LookupID, LookupID_SearchRange, 0)) Then
    If CopyValueID.Value <> "" Then
        CopyValueID.Copy
        CopyValueID_Paste.PasteSpecial xlPasteValues
    End If
End If
Next i

End Sub

コードが行 2 と行 4 から値を選択してコピーするのはなぜですか (+1 ステップを使用しているように見えますか?) ありがとうございます。

4

2 に答える 2

3

あなたは次のように定義RowCountしていCountA + 1ます:

RowCount = Application.WorksheetFunction.CountA(PasteSheet.Range("A:A")) + 1 'finds the last cell to be used for copy

次に、貼り付けている行に実際にもう一度追加します。

Set CopyValueID_Paste = PasteSheet.Range("A" & RowCount + 1) ' When it finds the ID, it copies some cell to the last row in Sheet2

したがって、結果を上書きしていると思いますか?のいずれかを削除すると、+1うまくいくはずです。

社説: 誰かがコピー先とコピー元の範囲を定義しているのを見てうれしく思います。一連のSelect's を使用するのではなく、間違いなく優れたコーディング スタイルです!

于 2013-11-06T15:31:32.093 に答える