2015-07-20 4 views
2

Я пишу макрос, который копирует данные в форму шаблона, сохраняет форму под другим именем и затем копирует с использованием той же пустой формы. Некоторые данные копируются в объединенные ячейки. Как ни странно, код, который я сейчас использую, работает для первой, второй и третьей итераций, но не четвертый.Не удается вставить в объединенную ячейку с помощью VBA

Я пробовал все, что мог, но это все равно не сработает. Это дает мне сообщение об ошибке «Мы не можем сделать это в объединенной ячейке».

Вот код, который не будет вставляться в ячейку.

'  
' Transfers Component 1 Data 
' 
    Range("B27").Select 
    Selection.Copy 
    Windows("Protected_Form.xls").Activate 
    Range("B61:D61").Select 
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
     xlNone, SkipBlanks:=False, Transpose:=False 

А вот код, который делает вставки в объединенную ячейку ранее в программе:

' 
' Transfers Component 1 Data 
' 
    Range("AV194").Select 
    Selection.Copy 
    Windows("Protected_Form.xls").Activate 
    Range("B61:D61").Select 
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
     xlNone, SkipBlanks:=False, Transpose:=False 

Как вы можете видеть, единственное, что меняется, так это то, что клетки данных копируется из.

Редактировать: Только что понял, что я использовал тот же код (часть, которая не работает) на ранней стадии в программе при определенных условиях. Я просто пытался запустить его в этих условиях, и это сработало.

Теперь я очень смущен. Не стесняйтесь просить меня прояснить ситуацию, я знаю, что это сбивает с толку.

Также: Я знаю .Select. медленно, мне все равно.

+0

Ошибка говорит сама за себя. Либо в вашем источнике, либо в рабочей книге назначения у вас есть объединенная ячейка. – nicholas79171

+0

Другие части программы вставляются в объединенные ячейки. – bdkong

+0

Только что видел ваше редактирование, у вас все еще такая же проблема? – nicholas79171

ответ

2

Вы пробовали полностью отдать свои рекомендации по диапазону? Возможно, раньше в программе Range («B27»). Выбор выбирается на одном листе и в диапазоне («B27»). В дальнейшем вы выбираете другой лист.

Кроме того, а не арфы на нем, но ... .Выбор не только медленный, он также приводит к неожиданным результатам, которые, как я подозреваю, проблема, с которой вы сейчас сталкиваетесь. Я знаю, что вы сказали в комментарии, что у вас нет времени (роскоши), чтобы уйти от него, но время, затрачиваемое на очистку вашего кода, теперь сэкономит вам время от времени, если вам когда-нибудь придется отлаживать, изменять, изменять, обновлять и т. д. Я бы не смотрел на это как на работу, а на необходимость писать хороший код VBA!

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