以下のコードは、選択した範囲(rng
として渡された)をワークシートの末尾に貼り付けようとしています。 すでに2行(A1、A2)がすでに存在する場合に機能します。Excel vba-xlDown
Sub copyRow(rng As Range, ws As Worksheet)
Dim newRange As Range
Set newRange = ws.Range("A1").End(xlDown).Offset(1, 0)
rng.Copy
newRange.PasteSpecial (xlPasteAll)
End Sub
したがって、A1とA2が存在し、このメソッドを100回呼び出すと、100個の行が挿入されます。しかし、行が存在しない場合、またはA1のみが存在する場合は、単にA2を上書きします。私は同じ行(上書き)に書き込みをExcelを見ることができました
それは、xlDownが2行未満かどうかを計算する方法とは関係ありません。
ご協力いただければ幸いです。
+1をきちんと説明してください。つまり、私は "ws.Range(" A1 ")End(xlDown)"を使用して範囲を設定することに決して賛成していません。理由は、間に空白のセルがある場合、(かなりわかりやすく)正しい範囲を与えません。 :) –
トニー、ウルの助けをありがとう。それは私のために働いた。最初の部分について、なぜ私はそれをやったのですか、私は項目18 http://support.microsoft.com/kb/291308に従っていました。これを行う簡単な方法を見て驚いた。ありがとうございました。 – bsr
@SiddharthRout ..または行が空白の場合は最後のセルが悪くなります。ルックアップははるかに優れていますが、関心のあるデータ範囲が空白でないことを確認するためにはまだテストが必要です。何が必要なのかに応じて[Findは簡単にできる](http://stackoverflow.com/q/4872512/641067) – brettdj