2014-01-22 3 views
-1

Я пытаюсь создать простой макрос транспонирования, и я получил эту ошибку, попробовал пару решений, но все еще ударил камень.Ошибка 1004, выберите метод объекта Диапазон

Вот код.

Sub pastetrasp(Zone As String) 
    Dim asdf1 As Range 
    Dim n As Integer 

    If Zone = "CF" Then 
     Set asdf1 = Range("Q1:Q4") 
     Set asdf2 = Range("P1:P4") 
     Set asdf3 = Range("O1:O4") 
     n = 1 
    End If 

    Sheets("Data").Select 
    Sheets("Data").asdf1.Select ' ERROR 
    ActiveCell.Copy 
    Sheets("example").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=True 
    ActiveCell.Offset(0, -n).Select 
end sub 
+1

Просто asdf1.Select Sheets ("Data") не имеет представления о том, что asdf1 есть! –

+1

'asdf1.Select' сам по себе будет работать до тех пор, пока активна родительская листка (а' asdf1' не 'Nothing', т.е. установлен в диапазон). Что вы хотите, чтобы этот код выполнял? Как правило, нет необходимости выбирать/активировать что-либо, если вы просто хотите скопировать данные в другое место. –

ответ

0

ActiveCell не может ссылаться на диапазон. И вам также не нужно использовать Select.

Используйте asdf1.Copy скопировать

И PasteSpecial, вам нужно поставить перед ним диапазоном, но вы выбираете лист перед этой линией.

Вместо этого, вы можете сделать что-то вроде

Sheets("example").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True

+0

Спасибо большое, это сработало !, но оно копирует только первое значение вектора, может быть что-то не так с командой вставки – user3207377

+0

Я попытался использовать asdf1.select, но это дает мне ошибку. Пробовал распечатать адрес и что работает. – user3207377

+0

О, активируя «примерный» лист перед установкой диапазонов, зафиксированных им, например, диапазон поставляется с листом «atached» к нему – user3207377

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