2013-06-17 4 views
0
Cells(R, DataCol).Resize(, ColumnCount).Copy Cells(R, DataCol) _ 
.Offset(RowOffset * (R - StartRow), ColOffset).PasteSpecial xlValues 

Может ли кто-нибудь сказать мне, почему приведенное выше утверждение является синтаксической ошибкой и как я могу получить инструкцию, чтобы разрешить использовать значение вставки или значение пасты?Ошибка синтаксиса со вставкой

ответ

0

Метод Copy имеет только один (необязательный) аргумент: Назначение. Это Range, к которому вы копируете.

PasteSpecial - отдельный способ. Вы должны использовать Copy, а затем отдельный оператор для выполнения PasteSpecial.

Вы смешиваете эти два подхода. Вы либо хотите скопировать сразу в пункт назначения, либо скопировать, а затем в PasteSpecial, требуя двух отдельных операторов. Например:

Cells(R, DataCol).Resize(, ColumnCount).Copy 
Cells(R, DataCol).Offset(RowOffset * (R - StartRow), ColOffset).PasteSpecial xlValues 
+0

Великий ответ, что хорошо работает, и очень познавательно. Еще один вопрос, который меня беспокоил. Почему, когда вы копируете блок из нескольких ячеек, т.е. – Elliot

+0

позволяет сказать диапазон A1: D1, и вы применяете функцию «изменить» на рабочем листе. По значению, задайте как диапазон - я получаю измененное значение четыре раза, однако при включении смещения в измененных столбцах excel распознает только первый столбец операция вставки (A1 для этого случая)? – Elliot

+0

Мне непонятно, что вы имеете в виду. Если я копирую и вставляю область, она вызывает только одно событие Change. Возможно, вы должны начать новый поток и предоставить некоторый код. –

0

В нескольких словах имеется некоторый синтаксис, но вы их смешивали. Так, самый популярный синтаксис для использования являются следующие:

'A)- all in one line 
Range().Copy Range() 'range to copy >> destination range 

'B)- instructions are in separate lines 
Range().Copy   'range to copy 
Range().PasteSpecial xlValues 'destination range 

'C)- instructions are in separate lines 
Range().Copy   'range to copy 
Sheets().Paste   'destination sheet, activecell/default cell in destination sheet 
2

Нет необходимости копировать/вставить для только значения - вы можете назначить непосредственно:

With ActiveSheet.Cells(R, DataCol) 
    .Offset(RowOffset * (R - StartRow), ColOffset).Resize(,ColumnCount).Value= _ 
         .Resize(, ColumnCount).Value 
End With 
Смежные вопросы