2015-10-05 146 views
0

我有一个数据库,其中包含一组从1到100的数字。我希望VBA能够在列A中运行此列表,并且在A为20到40之间的区域中,在列B上键入McFly。让VBA循环访问一个数组

我给出的代码中存在不匹配错误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 

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

+2

我想你想要'list.value'但'range(“B:B”)'需要更多的工作...... – findwindow

回答

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

您将list作为Range对象(不是数组)来调暗,因此请将其作为范围使用。例如,list.valuelist_readthru也是如此。

1

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

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