根据选择的选项更改单元格引用

时间:2015-11-28 17:20:48

标签: vba

我正在尝试根据所选选项更改单元格引用。我使用了两种方法。他们俩都没用。你能查一下我的代码吗?我有" Option Explicit"在我的代码上。我只是没有在这里复制它。

'first method
Function LM(n As Integer) As Long
    LM = ThisWorkbook.Worksheets("M").Range("a4").Offset(0, 6 + n).Column
End Function

Range("A4").Select
ActiveCell.End(xlToRight).Offset(-2, 1).Value = "Qtr"
Do While ActiveCell.Value <> ""
    ActiveCell.End(xlToRight).Offset(0, 1).Formula = _
        "=IFERROR(M!R[4]C" &  LM(n) & _
        "+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0)),0)"
ActiveCell.Offset(1, 0).Select
Loop

'Second option

If Option1 = true then n=6

Range("A4").Select
ActiveCell.End(xlToRight).Offset(-2, 1).Value = "Qtr"
Do While ActiveCell.Value <> ""
    ActiveCell.End(xlToRight).Offset(0, 1).Formula = _
        "=IFERROR(M!R[4]C" & n & _
        "+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0)),0)"
    ActiveCell.Offset(1, 0).Select 
Loop

谢谢

1 个答案:

答案 0 :(得分:0)

您需要.FormulaR1C1使用R[]C[]公式赋值,即。

`ActiveCell.End(xlToRight).Offset(0, 1).FormulaR1C1 = _
    "=IFERROR(M!R[4]C" &  LM(n) & _
    "+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0)),0)"`

在你的评论中,你说n总是6,但你的代码中有这一行

If Option1 = true then n=6

检查Option1程序,或向我们展示那些。

函数LM()似乎只是通过6+n的偏移[A4]列找到列号。它是不必要的,因为它只是4+6+n

希望这有帮助。