在模块中引用外部表 - 下标超出范围

时间:2017-11-28 22:10:05

标签: excel vba

我试图创建一个宏,这样当sheet2的M列中的一个单元格改为" Special"时,该单元格的行号被复制到第一个空白单元格中。 Sheet12的B列。这是我到目前为止所拥有的,目前在Sheet2中:

If Target.column = 13 Then

    Dim l As Integer

    With Sheet2

        For l = 3 To 1000
            If .Cells(l, 13) = "Special" Then
                Worksheets("sheet12").Range("B1").End(xlDown).Offset(1, 0).Value = l
            End If
        Next

    End With

End If

现在我收到了运行时错误' 9':下划线超出了行Worksheets("sheet12").Range("B1").End(xlDown).Offset(1, 0).Value = l的范围,但我不确定尝试后会改变什么具有相同错误的多次迭代。我知道还有其他一些问题涉及这种类型的错误,但我找不到任何有助于这个特定脚本的问题。

1 个答案:

答案 0 :(得分:0)

声明

Worksheets("sheet12").Range("B1").End(xlDown).Offset(1, 0).Value = l

唯一可能导致“下标超出范围”错误的是,如果您没有Name“sheet12”的工作表。

考虑到你有一个With Sheet2语句,“Sheet12”似乎可能是你工作表的CodeName,所以你的陈述应该是:

sheet12.Range("B1").End(xlDown).Offset(1, 0).Value = l

但是,正如@Lowpar在评论中指出的那样,最好在尝试查找列中最后使用的行时使用End(xlUp),这样可以更好地编写为:

sheet12.Range("B" & sheet12.Rows.Count).End(xlUp).Offset(1, 0).Value = l