簡體   English   中英

根據下拉值將數據從工作表復制到另一個工作表

[英]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
  1. 您應該聲明所有變量,而不僅僅是對象。 最好在開始工作之前准備好你的工具,即在編寫使用它們的代碼之前聲明變量。
  2. 如果此后使用默認工作簿(= ActiveWorkbook),那么聲明Set Wb = ThisWorkbook有什么意義?
  3. PasteSpecial需要自己的行。 您使用的構造將為Copy對象的Destination屬性提供參數。 后者是一個地址,不能包含PasteSpecial方法。
  4. 指定要粘貼到的第一個單元格就足夠了。

請注意, ListObject的 Range 包含整個表格。 使用DataBodyRange僅指定數據(沒有標題和總計)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM