我试图创建一个宏,这样当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
的范围,但我不确定尝试后会改变什么具有相同错误的多次迭代。我知道还有其他一些问题涉及这种类型的错误,但我找不到任何有助于这个特定脚本的问题。
答案 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