2017-01-04 17 views
2

列B(アナリストのログイン時刻)を解析するExcel VBAコードを作成しようとしていますが、その列が0の場合(その日のうちに)、隣接する列を更新します言うまでもなく、NA。現在、以下のコードは誤りです。 Cell(rng、i)のrng変数を数値に変更すると、コードはその数値(4と言う)をとり、すべてのフィールド(3〜23、C〜W)にNAを設定します。私は、rngの価値が内部関数に渡されていないという問題があると信じていますが、これをどうやって取得するのか分かりません。関数間のExcel VBAパス変数

Dim rng As Range 
For Each rng In Range("B4:B10") 
    If rng.Value = 0 Then 
     For i = 3 To 23 
      Cells(rng, i).Value = NA 
     Next i 
    End If 
Next rng 
+0

はおそらく、あなたがしたい#のN/'= CVErr(2042)で作成可能である' –

答えて

1

rngを使用する必要があります.Row

Cells(rng.Row, i).Value = "NA" 

NAの場合は、引用符、それを変数が、文字列ではありません。

非ループの代替:

If rng.Value = 0 Then Range(rng.Offset(0, 1), rng.Offset(0, 21)).Value = "NA" 
+0

はい、働いていたこと、ありがとうございました。 NAの周りを引用していましたが、ここにコピーするのを忘れました。しかし、rng.Rowはそれを修正したものです。 – sbagnato

0

問題はここにある:

Cells(rng, i).Value = "NA" 

あなたは番号(行番号)が行かなければならない場所を配置する範囲を与える理由は?

あなたが代わりを経由して行番号を取得し、0が有効でない行インデックス0を使用しようと.Valueを返すにはデフォルト(明示的なプロパティ名なし)独自に

Cells(rng.Row, i).Value = "NA"