2017-03-07 26 views
0

私はコーディングが新しく、VBAから始めます。これは宿題ではありませんが、私の父が私に挑戦してくれた小さなプロジェクトです。彼の指示は次のとおりでした:Forループと未定義範囲のVBA Ifステートメント

列Aの値が不定数である場合、各値が5より大きいか等しいかどうかを判断します。数値が5より小さい場合は、セルに「はい」と印刷しますその数が5以上の場合は、「いいえ」と印刷します。列Aの値が数値でないか空白の場合は、「数値以外の入力」を出力します。

ここに私の問題があります。ForループがネストされたIfステートメントで動作するようには見えません。カウンターが必要ですか?そして、私は列Bの新しいエントリーの範囲として何を設定するでしょうか?あなたがSelectSeletionの使用を避け、代わりに、完全修飾範囲を使用してみてください

Sub practice() 

    Range (Cells(1,1), Cells(Rows.Count, 1). End(xlUp)).Select 

    For Each cell In Selection.Cells 
     If cell.value < 5 Then 
      ThisWorkbook.Sheets("Sheet3").Range().Value = "Yes" 

     Else cell.value >= 5 Then 
      ThisWorkbook.Sheets("Sheet3").Range().Value = "no" 

     End If 
    Next 

End Sub 
+0

'ThisWorkbook.Sheets( "シート3")の範囲()[値]が 'cell.Offset(0、1).Value'と' Else'なければならないはずElseIfです。 – YowE3K

答えて

0

は、ここに私の現在のコードです。 RangeWorsheets("Sheet3")に完全修飾することでこれを行うことができます。

C.Offset(, 1).Valueを使用して、セルの値を右側(列B)に変更できます。

下コードしてみてください:。

Sub practice() 

    Dim Rng As Range 
    Dim C As Range 

    Set Rng = Worksheets("Sheet3").Range("A1:A" & Worksheets("Sheet3").Cells(Worksheets("Sheet3").Rows.Count, "A").End(xlUp).Row) 

    For Each C In Rng 
     If Not IsNumeric(C.Value) Or IsEmpty(C.Value) Then 
      C.Offset(, 1).Value = "Non numeric entry" 
     Else 
      If C.Value < 5 Then 
       C.Offset(, 1).Value = "Yes" 
      Else 
       If C.Value >= 5 Then 
        C.Offset(, 1).Value = "No" 
       End If 
      End If 
     End If 
    Next C 

End Sub 
関連する問題