6

私はいくつかのレコードを反復処理するマクロを作成しており、次のようにループ中に無限になる可能性を回避するために for ループを使用したいと考えていました。

For i = 0 to COUNT
  **do stuff with START_CELL.Offset(i,0)
Next

VBA からカウントを行う方法を思い出せなかったので、検索するとここに送られてきました: Use VBA to Count Non Blank Cells in a Column。1つの提案は

n = Worksheets("Sheet1").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count

これは複雑すぎるように思えたので、さらに掘り下げて使用することにしました。

COUNT = Application.WorksheetFunction.Count(COUNT_RANGE)

そのページの別の例では が使用されていましApplication.WorksheetFunction.CountA()たが、今でも心配しています (妄想的) 避けるべき理由があります。いずれかがあります?

皆さんありがとう。

4

1 に答える 1

6

ワークシート関数を避ける唯一の目立たない理由は、古いバージョンの Excel との下位互換性が心配な場合です。新しいバージョンの Excel では、通常、新しいワークシート関数が導入されています。これらがユーザーの Excel のバージョンで利用できない場合、問題が発生します。

それ以外に、ユーザーが使用しているバージョンで関数が使用できることがわかっている場合、コメントで述べたように、特にセルのループを回避する場合、それらは一般的に非常に効率的で、VBA の同等のものよりも高速です。

于 2013-08-29T21:58:47.847 に答える