我是编码的新手,我开始使用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
答案 0 :(得分:0)
您应该尽量避免使用Select
和Seletion
,而是使用完全限定的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