检测工作表中的最后一列

我正尝试在Sheet M中的公式中使用表单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 

你需要一个这样的function。

 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 

你能检查这个代码有什么问题吗?

您在公式string中使用了一个名为LastColumn1的未声明/未初始化的variables。 该variables在运行时没有值,导致错误。

如何解决它:

如果你只是使用Option Explicit ,你会被告知编译错误。 在try()过程的范围内, LastColumn1variablesLastColumn1声明。

由于您没有使用Option Explicit (要求声明所有variables),因此编译器会将未声明的variables初始化为typesVariant,并使用空的/ 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 ,这是一个无效的范围(没有列索引),它是不确定的/不能像这样存在。

使用上面的@ iDevelop函数可能会满足大多数普通的简单情况,但是您可能想要查看下面描述的更强大的方法:

在VBA中查找上次使用的单元格时出错