2013-10-03 2 views
1

Следуя моему предыдущему вопросу, на который был дан ответ, я написал код для оставшейся части моей проблемы, однако у меня появились проблемы.VBA - Копировать значения только

Часть рабочего листа использует =RAND() для генерации случайного числа. Поскольку это изменчивая функция, мне нужно было скопировать вывод формулы в новое место. Если бы я делал это вручную, я бы сделал копию -> вставлял специальные значения, чтобы просто перебирать числа, а не формулу.

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

Вот код:

' Copy Random Questions to Static Page for VLOOKUPS 
With Worksheets("Quiz Generator") 
    Range("NEWQUEST").Copy 
    'Selection.Copy 
End With 
With Worksheets("Static Question List") 
    Range("TOPSTAT").Select 
     Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
End With 

Я пробовал различные способы сделать это, используя

RANGE().Select 
Selection.Copy 
RANGE().Select 
Selection.Pastespecial Paste:=xlValues 

Также с помощью:

RANGE().Copy 
Range().PasteSpecial Paste:=xlValues 

В исходном коде может пройдите до Перед тем, как он выбрасывает

Run-Time error '1004': 
Application-defined or object-defined error 

Всплывающие

Любая помощь будет с благодарностью принят.

Все указанные диапазоны верны и в диспетчере имен, и я попытался с помощью ref-кода ячейки, чтобы узнать, было ли это имя диапазона.

Раздражающе это работало ранее с использованием длинного инструмента Select/Selection.Paste и т. Д., Но с тех пор, как он пытался убрать код, который он остановил.

Заранее спасибо.

ответ

0

Я хотел бы сделать что-то вроде этого, к

  • свалка диапазон от NEWCREST как значения в массив
  • дамп массива в первую ячейку в TOPSTAT и изменение размера по мере необходимости

(вам не нужны имена листов при работе с названиями диапазонов, если у вас нет локальных номеров)

Код

Dim x 
x = Range("NEWQUEST").Value2 
Range("TOPSTAT").Cells(1).Resize(UBound(x, 1), UBound(x, 2)) = x 
+0

Я пробовал это, но все же выбросил ошибку 1004. Я закончил тем, что менял листы, и указав диапазоны как ссылки на ячейки, чтобы получить эту работу, у меня есть тестовая копия листа, с которой я буду играть, чтобы посмотреть, могу ли я заставить его работать с именами диапазонов. – dmmsta

+0

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

+0

Я загрузил таблицу Excel в свой GoogleDrive: [link] (https://drive.google.com/folderview?id = 0B1Fh8GIuWP5namVVT0VjNmQ1TGc & usp = sharing) Не удалось решить, как добавить в эту тему. Заранее благодарен Adam – dmmsta

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