2016-10-12 15 views
0

forループの反復に基づいてcounta式を挿入および変更しようとしています。私が直面している問題は、コードがエラーなく実行されても、何も起こらないということです。 totalrow変数は一貫して0です。ここでどこが間違っているのか分かりません。すべての変数はループ外で初期化されています。 CurrentColnameは文字列、countUsedColsはlong、totalRowsはlongです。forループ反復に基づいてセル式を変更する

For i = 2 To countUsedCols 
    ActiveSheet.Cells(3, i).Select 
    currentColName = ActiveSheet.Cells(3, i).Value 
    If currentColName = "Valid From" Then 

     totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA($" & i & ":$" & i & ")" 

     totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Value 

答えて

2

いくつかのことがあります。

X=Y=Zを入力すると、Xはy = zかどうかに基づいてブール値になります。

ですから、書くとき:そのセルの数式は、あなたが提供した文字列と同じではありませんので、

totalrow = ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA($" & i & ":$" & i & ")" 

Totalrowはfalseを返しています。

第2に、COUNT Aは列ではなく行に解決されます。 iは数字であり、手紙ではありません。

最初の式からtotalrow =を削除し、範囲参照を変更します。

ActiveWorkbook.Sheets("Customer_Facing_View").Range("AR1").Formula = "=COUNTA(" & Columns(i).Address &")" 
+0

私は最初は明確ではないことをお詫びしますが、このループとサブのポイントはテーブルの行数を数えることです。しかし、 "valid from"はテーブルの中央にあるため、xldownの使用はオプションではありません。したがって、ループは有効な列から数えて、その行の数を確認します。 – Adit2789

+0

もう1つ:「有効」以外の他の列は、空白なしで塗りつぶされることは保証されていません – Adit2789

0

セルAR1に(最初のtotalrow文で)行数を計算する式を書きたいと思います。その値を戻します(2番目のtotalrow文を使用)。しかし、私は、スコットが指摘したように、最初のトーナメント文は間違っていると信じているそれを変更する必要があります。

また、Counta式では、元のワークシート名を含める必要があります。それ以外の場合は、Customer_Facing_Viewワークシートの列を数えればいいだけです。

関連する問題