让VBA循环遍历数组

时间:2015-10-05 22:31:52

标签: excel vba excel-vba

我有一个数据库,其中包含1~100的数字。我希望VBA在A列中运行此列表,在A介于20和40之间的区域,在B列键入McFly。

我的代码在以“If list> =”开头的行上给出了一个不匹配错误13

Dim list As Range
Dim list_readthru As Range
Set list = Range("A2", Range("A50").End(xlUp))
For Each list_readthru In list
If list >= 20 And list <=40 Then Range("B:B") = "McFly"
Next list_readthru
End Sub

我在确定自己做错了什么时遇到了问题。

3 个答案:

答案 0 :(得分:2)

如果你想要一个数组,你可以有一个数组:

Sub MM()

Dim list, i

list = WorksheetFunction.Transpose(Range("A2", [A50].End(xlUp)))

For i = 1 To UBound(list)
   If list(i) >= 20 And list(i) <= 40 Then Cells(i + 1, 2).Value = "McFly"
Next

End Sub

但是,我不知道这与将一个公式放在B栏中有何不同:

With Range("B2", [A50].End(xlUp))
    .FormulaR1C1 = "=IF(AND(RC[-1]>=20,RC[-1]<=40),""McFly"","""""")"
    .Value = .Value
End With

答案 1 :(得分:1)

您将list调暗为Range对象(不是数组),因此将其作为范围使用。例如,list.value同样适用于list_readthru

答案 2 :(得分:1)

你在这里混淆了一些东西。试试这个:

object.scale.copy( vector );