1

データのブロックと間に空の行があるスプレッドシートがあります。ブロックのサイズはさまざまです。元のデータを自動入力し、次のブロックに到達するまで他の空の行にコピーする数式があります。ブロックのサイズは常に変化しているので、ループが機能するようにデータの次のブロックを選択するにはどうすればよいですか?理想的なのは、アクティブセルの背後にあるデータを除外する、ある種の現在の領域プロパティです。これは、現在の状態のループが、各反復の終了時に新しいブロックの最初のセルとしてアクティブセルを残すためです。

4

1 に答える 1

0

リージョン間を移動する必要があるものをループする必要があるときはいつでも、オフセット(Range(myRange).Offset(1,0)のように)と通常は.Endの組み合わせを使用して、常に範囲の終わりに。例として(疑似コード)。

Dim lastCell As Range
Dim neededCell As Range

Set lastCell = ActiveRange.End(xlDown) 'picks the last cell down
Set neededCell = lastCell.Offset(2, 0) returns the cell two rows down from the last cell in above range.

警告、私はこれを頭のてっぺんからやっています。実際に機能するには調整が必要な場合があります...また、これらの方向に進む必要がある場合は、xlLeft、xlRight、およびclUPがあります。

また、新しい範囲を選択する必要がある場合は、オフセットで範囲を選択するだけで選択できます。私のコードはちょっと汚いかもしれませんが(まだ新しい)、これはうまくいくはずです。

Dim bigRange as Range
Set bigRange = ActiveSheet.Range(neededCell.Address & ":" & _
    neededCell.Offset(20, 20).Address)

「D5」でneededCellから始めると、「D5:X25」の範囲が返されます。

于 2012-12-06T21:12:05.050 に答える