0

我真的知道要出类拔萃,但我遇到了一些问题。我正在尝试创建一个考勤表,出于安全原因,它会全天定期更新。在一张包含所有可能名称的表格上,我有一列用于不同的公司、名称、营地、房间和现场。我已经编写了我的代码,这样如果一个人在现场,则 1 进入现场列,如果他们不在现场,则 0 进入。当出现 1 时,我希望将他们的姓名和所有其他信息转移到考勤表上,以便唯一出现的姓名是现场的姓名。如果他们在现场,我希望空间留空。我的代码有两个问题:

Sub onsite()

    x = 3   'start at row 3


    'start the loop
    Do While Cells(x, 6) <> ""

        'look for data with '1'
        If Cells(x, 6) = "1" Then

        'copy the row if it contains '1'
        Worksheets("Sheet1").Rows(x).Copy

        'go to main ERP.  activate it
        Worksheets("Sheet2").Activate

        **erow = Sheet2.Cells(Rows.Count, 6).End(x1Up).Offset(1, 0).Row**
        'paste data

         '**ERROR OCCURS HERE**
         ActiveSheet.Paste Destination:=Worksheets("Sheet2").Rows(erow)

         End If

         'go to all names and activate
         Worksheets("AllNames").Activate

         'loop through the other rows
         x = x + 1

    Loop

End Sub

第一个问题是,在我到达粗体线后,我收到一条错误“1004”消息并且代码停止工作

另一个问题是我不知道如何将 'erow=' 更改为当一个人的站点列中有 0 时跳过一行的代码

请帮忙!!

4

2 回答 2

1
Sub onsite()
    Dim x as long, erow as Long
    Dim shtSrc as Worksheet, shtDest as worksheet

    Set shtSrc = Worksheets("Sheet1")
    Set shtDest = Worksheets("Sheet2")
    erow = shtDest.Cells(rows.count, 6).End(xlUp).Row+1

    x = 3       

    Do While shtSrc.Cells(x, 6) <> ""

        If shtSrc.Cells(x, 6) = "1" Then

            shtSrc.Rows(x).Copy shtDest.cells(erow,1)
            erow = erow+1

        End If
        x = x + 1

    Loop

End Sub
于 2013-05-11T00:25:39.600 回答
0

此 MS 知识库文章描述了错误的原因和解决方法。

基本上,当以编程方式复制和粘贴整行时,这是一个问题。您必须只选择行中实际使用的单元格。

于 2013-05-11T00:24:12.693 回答