如何捕获VBA变量中的最后一个非缺失行以便稍后重复引用?

时间:2016-06-23 12:52:28

标签: excel vba excel-vba

我试图激活一个每月有三列(Jan-Dec)的电子表格。如果月份不在过去,那么第三列应该将另外两列相加(否则为空)。这应该从第6行应用到LastRow

我的问题是我无法弄清楚如何正确使用LastRow。需要事先使用不同的列来定义它,我可以回复没有任何缺失值。

我一直试图在LastRow中抓住这一行,但我认为我必须做一些根本错误的事情,因为set sh.LastRow出现类型不匹配错误:

Sub Prep_datadump()
    Dim sh As Worksheet
    Dim Dataset as Range
    Dim LastRow As Range
    Dim Month As Integer

    Set sh.Dataset.Range("C6:C" & .Range("C" & .Rows.Count).End(xlUp).Row)
    Set LastRow = Dataset.End(xlDown).Row

    For Month = 14 To 47 Step 3
      If Cells(1, Month) >= Date Then
        Sh.Range(Cells(6, Month), Cells(LastRow, Month)).FormulaR1C1 = "=sum(RC[-2],RC[-1])"
      End If
    Next Month
End Sub

1 个答案:

答案 0 :(得分:0)

您遇到问题的行(Set LastRow = Dataset.End(xlDown).Row)会尝试将Dataset范围内底部单元格的行号作为整数分配给LastRow变量。当您第一次将LastRow定义为Range时,代码无法执行此操作,因为它是一种不同的变量类型,因此您会收到不匹配错误。

尝试将Dim LastRow As Range行更改为Dim LastRow As Integer