In dem Debug-Fenster geben alle folgende Ausdrücke eins zurück.CountA gibt 0 zurück, WorksheetFunction.CountA gibt 1 zurück
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))
In diesem speziellen Fall ist der Bereich AB60: BF61, der im Debug-Fenster bestätigt wird.
In dem Arbeitsblatt, während das Skript pausiert ist, gebe ich in eine Zelle =CountA(AB60:BF61)
ein und das Ergebnis ist 0, was es sein sollte.
Jede Erklärung wird sehr geschätzt.
Windows 7, Excel 2010
Ich denke, dass der Doppelpunkt ein Komma sein sollte. Ich werde ein paar Tests machen. – Jeeped
Wenn es ein Komma wäre, würde es als zwei getrennte Argumente betrachtet werden; eine für jede Zelle. Mit Range wird der Bereich zwischen den Zellen erweitert. Aber lassen Sie mich wissen, nur für den Fall ... lol. –
Ja, Sie zählen immer ** 1 ** unabhängig von der tatsächlichen Zählung, weil Sie den Zellenwert von der ersten zusammen verketten, dann einen Doppelpunkt und dann den Zellenwert von der letzten. Sie zählen im Wesentlichen eine einzelne Saite, die immer ** 1 ** ist. Sie müssten es als Arbeitsblattfunktion auswerten, indem Sie die mit dem Doppelpunkt verketteten Zellenadressen verwenden, um sie auf diese Weise zu verwenden. Wenn Sie Range verwenden und die obere linke und untere rechte Ecke getrennt durch ein Komma angeben, zähle ich den gesamten Bereich. – Jeeped