2017-02-16 87 views
1

因此,我必须从一个工作簿复制单元格A1,B2和C3,并在列A,B,C中使用这些值在另一工作簿(最后一行)中添加一行。复制单元在另一个工作簿中添加一行

这就是我到目前为止,我认为我很接近,但我无法完成。 普通中等教育我不知道什么是错用此语法 “设置LASTROW = wNew.Cells(Rows.Count, ”A“)。完(xlUp).Row + 1” 作用似乎是问题

Sub Botão1_Clique() 

Dim wks As Worksheet 
Dim wNew As Worksheet 
Dim y As Workbook 
Dim lastrow As Long 

Application.ScreenUpdating = False 
Set wks = ActiveSheet 

Set y = Workbooks.Open("Y:\teste.xlsx") 

Set wNew = y.Sheets("GERAL") 

Set lastrow = wNew.Cells.(Rows.Count, "A").End(xlUp).Row + 1 


wks.Cells(1, 1).Copy 
wNew.Cells(lastrow, 1).PasteSpecial Paste:=xlPasteValues 
wks.Cells(2, 2).Copy 
wNew.Cells(lastrow, 2).PasteSpecial Paste:=xlPasteValues 
wks.Cells(3, 3).Copy 
wNew.Cells(lastrow, 3).PasteSpecial Paste:=xlPasteValues 



    Application.ScreenUpdating = True 


End Sub 

我也想关闭Y:\ teste.xlsx工作簿,并显示一条消息说“添加一行”

回答

0

你做好适当引用WorkbooksWorksheets还要确保你完全有资格CellsRows。它们是工作表对象I.e的属性。 ThisWorkbook.Worksheets("..").Rows

Sub Botão1_Clique() 
    Dim wks As Worksheet, wNew As Worksheet 
    Dim y As Workbook 
    Dim lastrow As Long 

    Application.ScreenUpdating = False 

    Set wks = ActiveSheet 
    Set y = Workbooks.Open("Y:\teste.xlsx") 
    Set wNew = y.Sheets("GERAL") 

    With wNew 
     lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 
     .Cells(lastrow, 1).Value = wks.Cells(1, 1) 
     .Cells(lastrow, 2).Value = wks.Cells(2, 2) 
     .Cells(lastrow, 3).Value = wks.Cells(3, 3) 
    End With 

    'extra code as requested   
    y.Close True 'save changes if TRUE 
    MsgBox "ROW ADDED" 

    Application.ScreenUpdating = True 
End Sub 
+0

“对象是强制性的” 错误@CallumDA –

+0

我已经更新了答案。从'Set lastrow = ...'中删除'Set'。这只是一个'长',并不需要设置(这是保留给对象) – CallumDA

+1

很多,我是一个土木工程师,只花了近2.5小时试图做到这一点,我的知识非常有限编程,但我很努力地从别人的代码中学习。 –

相关问题