將此代碼粘貼到帶有源表(ListObject)的工作表中。我使用了你指定的表名。你需要調整工作表名稱與實際的工作簿:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim loSource As Excel.ListObject
Dim loTarget As Excel.ListObject
Dim wb As Excel.Workbook
Set wb = ThisWorkbook
With wb
Set loSource = .Worksheets("Source").ListObjects("TableRawData")
Set loTarget = .Worksheets("Target").ListObjects("ProcessedData")
'Only change Target if Source has more rows or columns, i.e,
'don't shrink, only grow.
If loTarget.Range.Rows.Count < loSource.Range.Rows.Count Or _
loTarget.Range.Columns.Count < loSource.Range.Columns.Count Then
With loTarget
'two kinds of 'Resize in one line!
.Resize (.Range.Cells(1).Resize(loSource.Range.Rows.Count, loSource.Range.Columns.Count))
End With
End If
End With
End Sub
在本觸發如果行或列的任意數量越大的評論中指出。如果您希望它在Target長大或縮小時更改,請將<更改爲<>。
如果您對代碼中使用的兩種不同Resize
感興趣,以及有關複製表的一些信息,請參閱我的this post of mine。
對不起,一個蹩腳的問題 - 我如何讓這個代碼運行,要麼通過請求或自動?我嘗試在Macros中粘貼「表單/查看代碼」,但之後我無法再調用它。我甚至試圖在這樣的表單代碼中調用:'Worksheet_Change',在函數定義之前(看起來像Target參數是多餘的,所以我刪除了它)。嘗試重新啓動Excel - 沒有效果。請指教。 – Neolisk
每當工作表中的源表發生更改時,它都會自動運行。這是WorkSheet_Change事件的作用。正如你所提到的,你必須將它粘貼到該表的代碼中。您還必須調整與我使用的不同的任何工作表或表格(VBA中的ListObject)名稱。 –
是的,現在它正在工作。謝謝你的幫助。 +1並接受。 – Neolisk