![](/img/trans.png)
[英]Excel 2010 - Copy data to a specified sheet based on drop-down value.
[英]Copy Data from Sheet to another based on drop-down value
我在一個工作簿中有幾張紙。 我想根據工作表 1 中“A2”中的下拉值將數據(整個內容)從不同工作表復制粘貼到工作表 1(比如說 B6)。下拉列表包含所有其他工作表的名稱. 所以,如果我 select Sheet 2 在下拉列表中,它應該將整個內容從 Sheet 2 復制到 Sheet 1,從 B6 開始。
這是我為它創建的宏。 但它不起作用。 你能幫我弄清楚我的代碼有什么問題嗎?
Sub Button21_Click()
Dim wb As Workbook
Dim criteria As String
Application.ScreenUpdating = False
'Set values for your variables.
Set wb = ThisWorkbook
criteria = wb.Sheets("Sheet1").Range("A2")
Dim TT As ListObject
For i = 1 To Sheets.Count
With Sheets(i)
For Each TT In Sheets(i).ListObjects
If TT.Name = criteria Then TT.Range.Copy Sheets("Sheet1").Range("B6:Q22").PasteSpecial: Exit Sub
Next
End With
Next
Application.ScreenUpdating = True
End Sub
這是有效的代碼。
Sub Button21_Click()
Dim Wb As Workbook
Dim Criteria As String
Dim i As Integer ' loop counter: Sheets
Dim Tbl As ListObject ' loop object
'Set values for your variables.
Set Wb = ThisWorkbook
Criteria = Wb.Sheets("Sheet1").Range("A2")
Application.ScreenUpdating = False
For i = 1 To Wb.Sheets.Count ' { "Shees(1)" is in the ActiveWorkbook
' { which may be different from Wb
For Each Tbl In Wb.Sheets(i).ListObjects
If Tbl.Name = Criteria Then
Tbl.Range.Copy
Wb.Worksheets("Sheet1").Range("B6").PasteSpecial
Exit Sub
End If
Next Tbl
Next i
Application.ScreenUpdating = True
End Sub
Set Wb = ThisWorkbook
有什么意義?PasteSpecial
需要自己的行。 您使用的構造將為Copy
對象的Destination
屬性提供參數。 后者是一個地址,不能包含PasteSpecial
方法。 請注意, ListObject
的 Range 包含整個表格。 使用DataBodyRange
僅指定數據(沒有標題和總計)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.