似乎我范围内的单元格引用不起作用

时间:2019-04-26 07:34:04

标签: excel vba reference cell

基于“ HiddenSheet”工作表的L列中存在的文本(“ SNV”),我想为列中存在“ SNV”文本的所有行选择并复制第1列至第6列中的单元格

然后,我要将复制的单元格的值粘贴到SNVReports工作表中。

我有以下代码:

Sub Macro2()

a = Worksheets("HiddenSheet").Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To a

If Worksheets("HiddenSheet").Cells(i, 12).Value = "SNV" Then

    Worksheets("HiddenSheet").Range(Cells(i, 1), Cells(i, 6)).Copy
    Worksheets("SNVReports").Activate
    b = Worksheets("SNVReports").Cells(Rows.Count, 1).End(xlUp).Row
    Worksheets("SNVReports").Cells(b + 1, 1).Select
    ActiveSheet.Paste
    Worksheets("HiddenSheet").Activate

End If
Next

Application.CutCopyMode = False

End Sub

我有时会收到以下错误: “应用程序定义或对象定义的错误”

这显然与我的范围有关:

    Worksheets("HiddenSheet").Range(Cells(i, 1), Cells(i, 6)).Copy

我不太了解,非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的Cells(i,#)引用不合格。因此,如果运行宏时SNVReports选项卡处于活动状态,那么您在谈论什么范围就会感到困惑。

整个代码可以完成以下工作:

Sub Macro2a()

    Dim sourcesheet As Worksheet
    Dim destsheet As Worksheet
    Dim lastsourcerow as Long
    Dim lastdestrow as Long
    Dim i as Long

    Set sourcesheet = Worksheets("HiddenSheet")
    Set destsheet = Worksheets("SNVReports")

    With sourcesheet

        lastsourcerow = .Cells(.Rows.Count, 1).End(xlUp).Row

        For i = 1 To lastsourcerow

            If .Cells(i, 12).Value = "SNV" Then
                lastdestrow = destsheet.Cells(destsheet.Rows.Count, 1).End(xlUp).Row
               .Range(.Cells(i, 1), .Cells(i, 6)).Copy destsheet.Cells(lastdestrow + 1, 1)
            End If

        Next

    End With

End Sub