将单个值与VBA中的数组进行比较

时间:2014-02-20 16:20:12

标签: vba excel-vba excel

Sub CHECKas()
    Dim lastrow As Long
    Dim lastcol As Long
    Dim l As Integer
    Dim i As Integer
    Dim rname As Constants
    Set rngTarg = Selection
    lastrow = Sheets("report").Range("B" & Rows.Count).End(xlUp).row
    lastcol = Sheets("report").Cells(2, Columns.Count).End(xlToLeft).Column
    Sheets("FEBBRAIO").Select
    ActiveCell.Offset(0, -3).Copy
    Sheets("REPORT").Select
    Cells(1, lastcol + 1).PasteSpecial xlPasteAll
    Application.CutCopyMode = False
    rname = Application.ActiveCell.Value
    ActiveCell.Offset(1, 0).Select

    For i = 2 To lastrow
        ThisWorkbook.Sheets("report").Select
        If Range("f2:f" & lastrow) <= Val(CStr(rname.Value)) _
            And Range("g2:g" & lastrow) > Val(CStr(rname.Value)) Then

            Cells(i, ActiveCell.Column).Value = "1"

        Else

            Cells(i, ActiveCell.Column).Value = 0

        End If

    Next i
End Sub

我是VBA的新手,我无法理解如何将常量值与range("g2:g" & lastrow)("f2:f" & lastrow)中的每个单元格进行比较。在我的情况下,常量值是一个活动单元格。例如,考虑以下公式:IF(AND($R$1<G2;$R$1>=f2);1;0其中R$1$是ROW 1中最后一个非空列的活动单元格。我需要用输出填充整个列(即activecell.column)从这个公式出来。

但是我遇到了不匹配的错误:

If Range("f2:f" & lastrow) <= Val(CStr(rname.Value)) _
    And Range("g2:g" & lastrow) > Val(CStr(rname.Value)) Then
    Cells(i, ActiveCell.Column).Value = "1"
Else
    Cells(i, ActiveCell.Column).Value = 0
End If

我从上一个问题中知道发生此错误是因为我正在尝试将单个值与值数组进行比较。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你必须使用

Range("F" & i)
你的代码中的

。同样的事情适用于此类代码的其他实例。