2013-04-09 2 views
2

Я продолжаю работать с ошибкой (что происходит без шаблона или с расчетом). Ошибка возникает, когда я пытаюсь сделать pastespecial (формулы или значения). Мне любопытно, есть ли альтернативный способ вставки значений или формул в VBA, учитывая, что количество строк в массиве является переменной (от 1 до 100). Я приложил фрагмент кода ниже.Ошибка выполнения 1004 «Метод класса диапазона с ошибкой»

«по длине и SELECTIONAREA определяются как строки

Range("P1").Select 

» длина формула в ячейке, которая подсчитывает длину таблицы

length = ActiveCell.Value 
selectionarea = "B3:CM" + length 
Range("B2:CM2").Select 
Selection.Copy 
Range(selectionarea).Select 
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ 
    SkipBlanks:=False, Transpose:=False 
selectionarea = "C2:O" + length 
Range(selectionarea).Select 
Selection.Copy 
Range("BL3").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
+0

Каково значение 'length', когда вы получаете ошибку? Вы должны использовать '&' для конкатенации строк в VBA. '+' не рекомендуется. На какой линии это не удается? – Brad

+0

Когда он терпит неудачу (это не каждый раз), он терпит неудачу на пастообразных (либо значениях, либо формулах). – user2263642

+0

и что такое вауа «длины», когда он терпит неудачу? – Brad

ответ

2

Попробуйте что-то вроде этого

Dim rng As Range, Length 

Length = Range("P1").Value 

'EDIT use this for formulas 
Range("B2:E" & Length).Formula = Range("B2:E2").Formula 
'or this should also work 
'Range("B2:E" & Length).FillDown 

Set rng = Range("C2:O" & Length) 
Range("BL3").Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value 
+0

Я пробовал формулу выше (я не использовал код, как это раньше ...не полностью это понимают). Для вставки формул, похоже, у меня проблема с моим приложением, и я не уверен, как ее исправить в коде. Формула в B2 ссылается на BL2 ... при копировании формула в B3 ссылается на BL3, B4, однако ссылки BL5, B5 - BL7, B6 - BL9. B4 должен ссылаться на BL4, B5 с BL5 и B6 с BL6. Есть ли способ обратиться к этому в коде? – user2263642

+0

Этот код очень быстрый и полезный, я должен сказать ... есть ли простой способ настроить код для копирования значений с одного листа на другой? Пример Копирование данных с листа1 на лист2? – user2263642

+0

См. Мое правление для формул: мое плохое - я не полностью тестировал свой оригинальный подход. Копирование между листами должно работать нормально. –

1

Ошибка: метод «Вставить» объекта «Рабочий стол» не удался - 1004
Решение: нужно помнить о проблемах в Excel, прежде чем копировать фигуры с одного листа на другой лист.

  1. Активировать лист (с которого вы копируете).
  2. Выберите фигуры из листа.
  3. Скопируйте фигуры из листа.
  4. Вставить в форму для целевого листа

Пример: Ранее мой код, как показано ниже:

  Sheet1.Shapes(0).Copy 
      Targetsheet.Paste 

Я модифицирована, как показано ниже:

  Sheet1.Activite 
      Sheet1.Shapes(0).Select 
      Sheet1.Shapes(0).Copy 
      Targetsheet.Paste 

Сейчас он работает нормально ,

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