在范围内的用户定义函数中传递单元格值

时间:2016-12-27 13:54:08

标签: excel-vba vba excel

Sub PlaceOrd()
    Dim i As Long
    For i = 2 To 52
        Range("Y" & i).FormulaR1C1 = _
            "=PlaceRegularOrder(Range("A" & i), Range("B" & i), ""BUY"", ""SL"", Range("W" & i), ""MIS"", Range("Q" & i), Range("Q" & i))"
    Next i
End Sub

上面的代码抛出错误"预期:语句结束"。请告诉我如何处理这个问题。在上面的代码" A"," B"," W"和" Q"是列。但如果我代表" A" as"" A""然后代码显示没有错误,但A B W和Q被视为文本。如何纠正这个

我的函数(PlaceRegularOrder(....))应该放在Y2,Y3 ..... Y52中使用循环。一些价值取自" A"," B"," W"和" Q"。请让我知道我该怎么做

1 个答案:

答案 0 :(得分:0)

您当前的代码正在尝试创建要传递给FormulaR1C1属性的字符串。你犯了三个错误:

  1. 尝试在字符串中存储双引号时,您没有使用双引号。 (你似乎在某些地方做过,但其他地方却没有。)

  2. 您希望Excel本身能够理解Range("A2")之类的内容。

  3. 您没有对单元格使用R1C1表示法。

  4. 您的代码必须是:

    Sub PlaceOrd()
        Dim i As Long
        For i = 2 To 52
            Cells(i, "Y").FormulaR1C1 = _
            "=PlaceRegularOrder(RC1, RC2, ""BUY"", ""SL"", RC23, ""MIS"", RC17, RC17)"
        Next i
    End Sub
    

    然后可以将其简化为:

    Sub PlaceOrd()
        Range("Y2:Y52").FormulaR1C1 = _
            "=PlaceRegularOrder(RC1, RC2, ""BUY"", ""SL"", RC23, ""MIS"", RC17, RC17)"
    End Sub