根据列标题进行宏复制和粘贴

问题描述 投票:1回答:1

我对在Excel中编写宏非常陌生,并且做了很多工作以尝试解决我的问题,但是我还没有找到一种可行的解决方案。

我正在尝试编写宏以执行以下操作:

我正在尝试根据列标题从工作表1的工作表1中复制数据(例如,我想复制列名“排序”下的所有数据)。此行中数据的行数可能会增加/减少。然后,我想将此数据粘贴到工作表2的工作表2中,列名称为“名称”。可以在两个工作簿中添加/删除列,这就是为什么我要基于列名而不是列号编写要复制的宏的原因。

我一直在使用下面的代码,我曾尝试根据网上发现的类似但略有不同的请求将这些代码放在一起,但是当我运行宏时,什么也没发生-我已经在工作簿2中编写了宏它只是打开工作簿1。

[如果有人看到我的代码有问题或提出其他建议,我将非常感谢您的帮助。谢谢!!

Sub CopyProjectName()
    Dim CurrentWS As Worksheet
    Set CurrentWS = ActiveSheet
    Dim SourceWS As Worksheet
    Set SourceWS = Workbooks("Workbook1.xlsx").Worksheets("Sheet1")
    Dim SourceHeaderRow As Integer: SourceHeaderRow = 1
    Dim SourceCell As Range, sRange As Range, Rng As Range
    Dim TargetWS As Worksheet
    Set TargetWS = Workbooks("Workbook2.xlsm").Worksheets("Sheet2")
    Dim TargetHeader As Range
    Set TargetHeader = TargetWS.Range("A1:AX1")
    Dim RealLastRow As Long
    Dim SourceCol As Integer

    Range("B2").Select
    SourceWS.Activate
    LastCol = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
    Set sRange = Sheets("Sheet1").Range("A1", Cells(1, LastCol))
    With sRange
        Set Rng = .Find(What:="Sort", _
                        After:=.Cells(1), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            LastRow = Sheets("Sheet1").Cells(Rows.Count, Rng.Column).End(xlUp).Row
            Sheets("Sheet1").Range(Rng, Cells(LastRow, Rng.Column)).Copy
            TargetWS.Activate
            Sheets("Sheet2").Range("B1").Paste
        End If
    End With
End Sub  

我对在Excel中编写宏非常陌生,并且做了很多尝试来解决我的问题,但是我还没有找到一种可行的解决方案。我正在尝试编写一个宏来执行...

excel vba copy-paste
1个回答
1
投票

Workbook1.xlsxWorkbook2.xlsm必须在下面的代码中打开

© www.soinside.com 2019 - 2024. All rights reserved.