2016-10-07 8 views
0

私はこの単純なループの仕事をしようとしています。列Wの対応する値が "売る"とき、私は列Rの値を返そうとしています。ここで私の目障りなミスは何ですか?範囲内の各セルのループは、私が望む任意の値を返しません。私のコードにエラーはありません。

For Each cell In Range("n62:n166") 

    If cell.Value = "sell" Then 
    Range("r" & cell.Row) = Range("w" & cell.Row) 

    End If 
Exit For 
Next 

ありがとうございます。私はVBAの初心者ですので、私はまだこれで本当に悪いです。ありがとう。

+0

を作ることをお勧めしたいです単一の列を使って 'For lRow = 62 to 166'を使うのが簡単になります。' If Cells(lRow、 "N").Value = "Sell" Then 'を比較し、最後に' Cells( Value =セル(lRow、 "R")。Value'そしてあなたは完了しました。なぜあなたのループに 'Exit For'を持っていますか? –

+0

上記の私のコメントを読んで、なぜあなたは 'For'ループで' Exit For'を持っていますか?このコードを実行するワークシート名は何ですか? –

+0

こんにちは@shairado、私はこれを投稿する前にその方法を試してみました。私はもう一度試しましたが、うまくいきません。 :/ – jadeliew123

答えて

0

列Rから列Wに値をコピーする場合は、次のように記述する必要があります。 Range("W" & cell.Row) = Range("R" & cell.Row)さらに、Nextの代わりにExit Forがなく、を使用する必要があります。

For Each cell In Range("n62:n166") 
    If cell.Value = "sell" Then 
     Range("W" & cell.Row).Value = Range("R" & cell.Row).Value 
    End If 
Next cell 
+0

こんにちは、あなたのご意見ありがとうございます。私はこれを投稿する前に両方の変更を試してみましたが、うまくいきませんでした! : – jadeliew123

+0

残念ながら..残念ながら..これらの変更を試してみました:/ – jadeliew123

+0

あなたが間違ったシートで作業している可能性があります。これをチェックするには、コードの前に 'MsgBox ActiveSheet.Name'を入れて、正しいシートがあることを確認します。 ..それがうまくいかない場合、それは何をしますか?何もない?または何らかのエラー? –

0

あなたは、要件(value = "Sell")を満たす行の列Wの値に列Rにおけるセルの値を変更しようとしていますか?もしそうなら、あなたは.Value作品を逃している - ここで:

For Each cell In Range("N62:N166") 
    If Trim(WorksheetFunction.Proper(Cell.Value)) = "Sell" Then Range("R" & Cell.Row).Value = Range("W" & Cell.Row).Value 
Next 
+1

'Value'の使用は良い習慣ですが、ここでは厳密には必要ではありません。私は 'Value'がセルオブジェクトのデフォルトのプロパティだと信じています。 –

+0

@ V.K。あなたは正しい - 私はちょうど今問題を見ている直後です(私はそれを実現することなく自分のコードで修正しました) - 1回の反復の後、 'Exit for'のためにループから追い出されます – Jeremy

+0

こんにちはジェレミー、それはまだ動作しません:( – jadeliew123

3

を私はあなたのすべての範囲の呼び出しのためのシートを指定し、ループしている場合は、比較の大文字小文字を区別しない

With Sheets("Sheet2") 
For Each cell In .Range("n62:n166") 

    If Trim$(Lcase$(cell.Value2)) = "sell" Then 
    .Range("r" & cell.Row).Value2 = .Range("w" & cell.Row).Value2 

    End If 
Next 
End With 
関連する問題