我正在尝试在Sheet M的公式中使用Sheet D中的Lastcolumn。这是我的代码:D!R[8]C " & LastColumn1 &
。
但看起来代码正在使用工作表M中的最后一列编号。
请您检查此代码有什么问题?
Sub misc()
Dim LastColumn1 As Long
LastColumn1 = ActiveWorkbook.Worksheets("D").Range("a12").End(xlToRight).Column
End Sub
Sub try()
Sheet1.Select
Range("A4").Select
ActiveCell.End(xlToRight).Offset(-2, 1).Value = counter & "Qtr"
Do While ActiveCell.Value <> ""
ActiveCell.End(xlToRight).Offset(0, 1).Formula = "=IFERROR(D!R[8]C " & LastColumn1 & " *(1+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0))),0)"
ActiveCell.Offset(1, 0).Select
Loop
End Sub
答案 0 :(得分:0)
你需要一个功能。
Function LastColumn() as long
LastColumn = ThisWorkbook.Worksheets("D").Range("a12").End(xlToRight).Column
end function
然后直接从您的代码中调用该函数:
Sub try()
Sheet1.Select
Range("A4").Select
lastCol = LastColumn '## Calling the function from above
ActiveCell.End(xlToRight).Offset(-2, 1).Value = counter & "Qtr"
Do While ActiveCell.Value <> ""
ActiveCell.End(xlToRight).Offset(0, 1).Formula = "=IFERROR(D!R[8]C " & lastCol & " *(1+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0))),0)"
ActiveCell.Offset(1, 0).Select
Loop
End Sub
答案 1 :(得分:0)
请您检查此代码有什么问题?
您有一个名为LastColumn1
的未声明/未初始化的变量,您在公式字符串中使用该变量。此变量在运行时没有值,这会导致错误。
如何解决它:
如果您只使用Option Explicit
,则会收到编译错误通知。在LastColumn1
过程的范围内,try()
变量未声明。
由于您没有使用Option Explicit
(要求声明所有变量),编译器会将未声明的变量初始化为Variant类型,其值为空/ 0 / null-string。
所以,你基本上有一个明显的错误:
ActiveCell.End(xlToRight).Offset(0, 1).Formula = _
"=IFERROR(D!R[8]C " & EMPTY & " * _
(1+INDEX(A!R3C4:R418C27,MATCH(M!R2C,A!R2C4:R2C27,0))),0)"
因为该连接的结果是:D!R[8]C
并且这是一个无效的Range(没有列索引),所以它是未定义的/不能存在。
使用上面的@ iDevelop&#39开发的函数可能足以满足大多数普通的简单案例,但是你可能想要查看这里描述的更强大的方法: