让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