2013-08-07 3 views
0

Я пытаюсь скопировать столбцы на другой рабочий лист, идущий по имени столбца. Проблема с приведенным ниже кодом заключается в том, что он копирует только столбец состояния калькулятора цены. Это переписывание двух других. Есть ли лучший способ изменить этот код, чтобы он добавлял, а не перезаписывал?Копирование нескольких столбцов по имени столбца

Dim aCell1, aCell2, aCell3 Как Range Dim strSearch As String

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 
+0

Привет всем, любое обновление здесь об этом? –

+0

вы копируете столбцы в приведенном выше коде, но вы не вставляете его нигде .... это то, что вы после одновременного выбора нескольких столбцов, которые затем можно вставить, и они будут рядом друг с другом? – RowanC

+0

Да. Я хочу скопировать вышеупомянутые три столбца из исходного листа, которые не находятся рядом друг с другом на новом рабочем листе, чтобы они были рядом друг с другом. Забыл добавить приведенный ниже фрагмент кода для пасты, извините за это: wrkbk.Activate ActiveSheet.Paste –

ответ

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 

Это выбирает столбцы в одном шаге, как несколько таких областях, как диапазон («A: A, C: C, E: E»). запятая - это добавление текстовой строки, как если бы вы использовали запятую в команде диапазона, она имеет другое значение.

+0

Хорошо, но когда я вставляю, ActiveSheet.Paste, похоже, больше не вставляется правильно для некоторых столбцов. Я получаю #REF! для некоторых столбцов. Как я могу заставить его вставлять значения, поэтому у меня нет этой проблемы. –

+0

Проверить, выбрав верхнюю ячейку в столбце, поэтому перед activesheet.paste сделайте activesheet.range («A1»). Выберите – RowanC

+0

. Кричит, неправильно читает, что использовать пасту специальные значения: ActiveSheet.Range («A1»). PasteSpecial xlPasteValues – RowanC

Смежные вопросы