2014-03-18 236 views
1

我有工作表1(格式爲表格)和工作表2(格式爲表格)。我想將活動行從工作表1複製到工作表2.我已經嘗試了下面的工作,對於正常範圍的工作良好,但對於格式爲表格的工作表不適用。將活動行從一個工作表複製到另一個

Private Sub CommandButton1_Click() 
Dim lastrow As Long 

With ThisWorkbook.Worksheets("Sheet2") 
    lastrow = Application.Max(4, .Cells(.Rows.Count, "B").End(xlUp).Row + 1) 
    .Range("B" & lastrow).Resize(, 5).Value = _ 
     Range("A" & ActiveCell.Row).Resize(, 5).Value 
End With 
End Sub 
+1

1)請問你在Sheet1表中包含公式或只值(在列'B:F')? 2)sheet2中的表的相同問題(在'A:G'列中)? –

+0

@simoco其下拉列表中的唯一值 – user3331363

+1

am我更正了,您需要將活動行(列B:F)中的單元格複製到表格ojn sheet2中的新行(列A:G)? –

回答

1

UPDATE:

Private Sub CommandButton1_Click() 
    Dim tbl As ListObject 
    Dim tblRow As ListRow 
    Dim lastRow As Long 

    If UCase(Range("F" & ActiveCell.Row)) <> "YES" Then Exit Sub 

    With ThisWorkbook.Worksheets("Sheet3") 
     'change Sheet3 to destination sheet - where you need to paste values 

     If Not IsError(Application.Match(Range("B" & ActiveCell.Row), .Range("B:B"), 0)) Then Exit Sub 

     Set tbl = .ListObjects(1) 
     If tbl.Range(tbl.Range.Rows.Count, "B") = "" Then 
      lastRow = Application.Min(tbl.Range(tbl.Range.Rows.Count, "B").End(xlUp).Row + 1, _ 
        Application.Max(4, .Cells(.Rows.Count, "B").End(xlUp).Row + 1)) 
     Else 
      lastRow = tbl.ListRows.add.Range.Row 
     End If 

    End With 
    tbl.Range(lastRow, "B").Resize(, 5).Value = _ 
      Range("A" & ActiveCell.Row).Resize(, 5).Value 
End Sub 
+0

謝謝,讓我試試這個! – user3331363

+0

看起來像記錄在最後加1行的Sheet 3(格式化爲表格)上得到複製。假設我將Sheet 3格式化爲表格,直到100行(列A到G),複製的記錄放在第101行上。但是Sheet 3表格是空白的。請告訴我。 – user3331363

+1

@ user3331363,我已經更新了我的答案 - 現在試試 –

相關問題