2017-10-18 438 views
1

我目前正在Excel中處理電子表格。Excel:使用VBA將行復制到另一個表中的表格

我的目標是創建一個VBA,將具有特定條件的行復制到我的工作簿中的下一張工作表和「日誌表」中。

我VBA看起來是這樣的:

Sub ImportRows() 

    Dim xRg As Range 
    Dim xCell As Range 
    Dim I As Long 
    Dim J As Long 
    Dim K As Long 
    I = Worksheets("Print").UsedRange.Rows.Count 
    J = Worksheets("Store").UsedRange.Rows.Count 
    If J = 1 Then 
     If Application.WorksheetFunction.CountA(Worksheets("Store").UsedRange) = 0 Then J = 0 
    End If 
    Set xRg = Worksheets("Print").Range("I2:I" & I) 
    On Error Resume Next 
    Application.ScreenUpdating = False 
    For K = 1 To xRg.Count 
     If CStr(xRg(K).Value) = "Print" Then 

      xRg(K).EntireRow.Copy Destination:=Worksheets("Store").Range("A" & J +1) 
      xRg(K).EntireRow.Copy Destination:=Worksheets("Log").Range("A" & J +1) 
      xRg(K).EntireRow.Delete 
      If CStr(xRg(K).Value) = "Print" Then 
       K = K - 1 
      End If 
      J = J + 1 
     End If 
    Next 
    Application.ScreenUpdating = True 
End Sub 

的問題是,當我複製從Sheet1中調用打印數據在一個表,但是當我複製到了名爲「存儲」下一張(或日誌) - 數據不會進入表格,但會出現在表格下方的第一行,無法對數據進行排序。

有關如何解決此問題的任何建議?我認爲,這可能與目標範圍有關,但我不確定。 「:H A」,而不是「EntireRow」當從「打印」複製到「存儲」我只希望複製單元格 -


我也與數據的,我是拷貝量掙扎。


我是相當新的Excel!我感謝任何幫助!

謝謝!


我上傳了一張屏幕截圖,顯示在運行宏後「Store」的樣子。

enter image description here

http://imageshack.com/a/img922/9446/gpL9Ov.png

+0

複製範圍A:H,你可以用'相交(XRG(K).EntireRow,範圍(」 A:H「))。複製...' – Rosetta

+0

對不起,我沒有給你,是'商店'/'日誌'工作表中有一個列表中,數據不會進入表?列表我的意思是我們通過INSERT菜單插入,然後在Tables組下的Table插入。 – Rosetta

+0

謝謝您的回覆! 「打印」工作表是一個表格,我可以在「日期」上排序 - 當我將行復制到下一個工作表(商店)時,我希望能夠排序日期,因爲我想要那些下一個到期日的行將位於最前面。 我希望這可以讓它更清晰 – Straarup

回答

0

既然你有一個列表對象表,它會容易得多。

要僅從A行的H列複製,請使用Intersect()對A:H列進行裁剪。

然後複製到一個列表對象表,目的地設置爲新列表行

Intersect(xRg(K).EntireRow, Range("A:H")).Copy _ 
    Destination:=range("Table1").ListObject.ListRows.Add.Range 

表名可以發現如下,其默認爲表#:

Menu

table name

+1

非常感謝你!它非常完美! – Straarup

相關問題