0

我正在尝试将列复制到另一个按列名称的工作表。下面代码的问题在于它只复制了价格计算器状态列。它正在覆盖另外两个。有没有更好的方法来修改此代码,使其追加而不是覆盖?

将 aCell1、aCell2、aCell3 调暗为范围 将 strSearch 调暗为字符串

strSearch1 = "Change Request Description"
strSearch2 = "Current State"
strSearch3 = "Price Calculator Status"

'Set ws = ThisWorkbook.Sheets(1)

With wrkbk
    Set aCell1 = Sheets("3. PMO Internal View").Rows(1).Find(What:=strSearch1, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

   'Sheets("3. PMO Internal View").Columns(aCell.Column).Copy

    Set aCell2 = Sheets("3. PMO Internal View").Rows(1).Find(What:=strSearch2, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

    'Sheets("3. PMO Internal View").Columns(aCell.Column).Copy

    Set aCell3 = Sheets("3. PMO Internal View").Rows(1).Find(What:=strSearch3, LookIn:=xlValues, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)

    'If Not aCell Is Nothing Then
       ' MsgBox "Value Found in Cell " & aCell.Address & vbCrLf & _
       ' "and the column number is " & aCell.Column

        '~~> Do the copying here
        Sheets("3. PMO Internal View").Columns(aCell1.Column).Copy
        Sheets("3. PMO Internal View").Columns(aCell2.Column).Copy
        Sheets("3. PMO Internal View").Columns(aCell3.Column).Copy
    'Else
        'MsgBox "Search value not found"
    'End If
End With
4

1 回答 1

0

将您的复制行更改为:

Sheets("3. PMO Internal View").Range(Sheets("3. PMO Internal View").Columns(aCell1.Column).Address & "," & Sheets("3. PMO Internal View").Columns(aCell2.Column).Address & "," & Sheets("3. PMO Internal View").Columns(aCell3.Column).Address).Copy

这一步选择您的列,作为多个区域,如 range("A:A, C:C, E:E")。逗号是文本字符串的添加,就好像您在 range 命令中使用逗号一样,它具有不同的含义。

于 2013-08-08T04:44:02.293 回答