让VBA循环访问一个数组

我有一个从1〜100的数字集的数据库。 我希望VBA在列A中运行这个列表,在A是20到40之间的区域,在列B上键入McFly。

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

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 

我有问题确定我做错了什么。

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

 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 

你将list变暗为一个Range对象(不是数组),所以把它作为一个范围来处理。 例如, list.value同样适用于list_readthru

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

 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_readthru >= 20 And list_readthru <=40 Then Cells(list_readthru.row, 2) = "McFly" End If Next list_readthru End Sub