Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 根据选定的选项更改单元格引用_Vba - Fatal编程技术网

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

Vba 根据选定的选项更改单元格引用,vba,Vba,我正在尝试根据所选选项更改单元格引用。我使用了两种方法。两个都不起作用。你能查一下我的密码吗?我的代码上有“optionexplicit”。我只是没有复制到这里 '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

我正在尝试根据所选选项更改单元格引用。我使用了两种方法。两个都不起作用。你能查一下我的密码吗?我的代码上有“optionexplicit”。我只是没有复制到这里

'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
“第一种方法”
函数LM(n为整数)的长度
LM=此工作簿。工作表(“M”)。范围(“a4”)。偏移量(0,6+n)。列
端函数
范围(“A4”)。选择
ActiveCell.End(xlToRight).Offset(-2,1).Value=“Qtr”
当ActiveCell.Value“”时执行此操作
ActiveCell.End(xlToRight).偏移量(0,1).公式=_
“=IFERROR(M!R[4]C”&LM(n)&_
+索引(A!R3C4:R418C27,匹配(M!R2C,A!R2C4:R2C27,0)),0)
ActiveCell.Offset(1,0)。选择
环
“第二种选择
如果选项1=true,则n=6
范围(“A4”)。选择
ActiveCell.End(xlToRight).Offset(-2,1).Value=“Qtr”
当ActiveCell.Value“”时执行此操作
ActiveCell.End(xlToRight).偏移量(0,1).公式=_
“=IFERROR(M!R[4]C”&n&_
+索引(A!R3C4:R418C27,匹配(M!R2C,A!R2C4:R2C27,0)),0)
ActiveCell.Offset(1,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
检查
选项1
程序,或向我们展示这是什么

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


希望这有帮助。

代码的前两行在方框外。请从“第一种方法”开始,“它们不起作用”是什么意思?您的代码是否产生错误,或者它是否出错?对于第一个方法,即使我说n=4,宏也会选择第6列,而不是选择第6+n=10列。好的,第一个函数毫无意义。结果总是给你n+7。(从列1向右6+n列的列数=1+6+n)如果它出错,它会在其他地方出错。那么第二个列有什么问题?