我真的很擅长并且遇到一些问题。我正在尝试创建一个考勤表,出于安全考虑,全天定期更新。在一张包含所有可能名称的表格上,我有一个列,用于不同的公司,名称,营地,房间和现场。我写了我的代码,以便如果一个人在现场,而不是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时跳过一行
请帮助!!
答案 0 :(得分: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(x1Up).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
答案 1 :(得分:0)
This MS Knowledgebase article描述了错误原因和解决方法。
基本上,当以编程方式复制和粘贴整行时,这是一个问题。您只需选择行中实际使用的单元格。