Vba 根据选定的选项更改单元格引用
我正在尝试根据所选选项更改单元格引用。我使用了两种方法。两个都不起作用。你能查一下我的密码吗?我的代码上有“optionexplicit”。我只是没有复制到这里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
'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)如果它出错,它会在其他地方出错。那么第二个列有什么问题?