デバッグウィンドウで、次の式はすべて1を返します。CountAが0を返し、WorksheetFunction.CountAが1を返します
Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & ":" & Cells(5 + (i - 1) * rows_per_record, 58))
Application.WorksheetFunction.CountA(ThisWorkbook.Sheets(n).Cells(4 + (i - 1) * rows_per_record, 28) & ":" & ThisWorkbook.Sheets(n).Cells(5 + (i - 1) * rows_per_record, 58))
この特定の場合、範囲はAB60:BF61であり、デバッグウィンドウで確認されます。
ワークシートでは、スクリプトが一時停止している間にセル=CountA(AB60:BF61)
に入力し、結果は0になります。
どのような説明も非常に認められます。
Windows 7、Excel 2010
私はコロンがカンマでなければならないと思っています。私はいくつかのテストを実行します。 – Jeeped
カンマであれば、2つの別々の引数とみなされます。各セルに1つ。範囲を使用すると、セル間の範囲が拡張されます。しかし、ちょうどその場合は私に教えてください。 –
はい、実際のカウントに関係なく、常に** 1 **を数えています。なぜなら、最初のセルの値を連結してからコロンと最後のセルの値を連結するからです。あなたは本質的に常に** 1 **となる単一の文字列を数えています。この方法で使用するには、コロンで連結されたセルアドレスを使用してワークシート関数として評価する必要があります。 Rangeを使用し、コンマで区切られた左上と右下を提供することによって、私は全体の範囲を数えます。 – Jeeped