For循环和未定义范围中的VBA If语句

时间:2017-03-07 07:24:22

标签: vba

我是编码的新手,我开始使用VBA。这不是家庭作业,而是我父亲向我挑战的一个小项目。他的指示是:<​​/ p>

给定A列中未指定数量的值,确定每个值是否小于OR大于或等于5.如果该数字小于5,则打印&#34;是&#34;在B列旁边的单元格中。如果数字大于或等于5,则打印&#34;否&#34;。如果A列中的值不是数值或为空白,请打印&#34;非数字输入&#34;。

这是我的问题:我似乎无法使用For循环来处理嵌套的If语句。我需要一个柜台吗?我将设置为B列中新条目的范围?

这是我目前的代码:

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

1 个答案:

答案 0 :(得分:0)

您应该尽量避免使用SelectSeletion,而是使用完全限定的Range。您可以使用Range完全限定Worsheets("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
相关问题