Страницы: 1
RSS
копирование диапазона значений
 
Добрый день. еще раз поднимаю вопрос копирования. Приложил пример (32кБ :))  
у меня копируется диапазон с формулами, потом преобразуется в значения, и данные не те, что я хочу взять из листа "база", а изменяются после копирования.  
Вчера так и не разобрался, и тема куда-то пропала:(
 
IvanANT, я Вам уже писал, не дразните модеров. Сколько Ваших файлов из-за размера удалили"и тема куда-то пропала:("? И мне не хочется по ушам получать за помощь нарушителям. Ждите, Вам ответят. Но уже не я.
Я сам - дурнее всякого примера! ...
 
Значит мой совет не успели прочитать?  
Вот новая редакция, старый код просто закомментировал:  
 
  With Sheets("База") ' Работаем с листом "база"  
     For i = 8 To BazaLastRow 'Циклом перебираем строки со 8 о последнюю  
        If .Cells(i, 1) >= Start And .Cells(i, 1) <= Finish Then 'Если ячейка столбца D текужей строки в нужном диапазоне, то  
        Range(Cells(svodLastRow + 1, 1), Cells(svodLastRow + 1, 6)).Value = Range(.Cells(i, 1), .Cells(i, 6)).Value  
'              Range(.Cells(i, 1), .Cells(i, 6)).Copy Cells(svodLastRow + 1, 1) ' строку (из двух ячеек) копируем в первую непустую строку листа "сводный"  
             svodLastRow = svodLastRow + 1 ' указали новый номер последней строки  
   
' Range("A8:E100").Value = Range("A8:E100").Value ' вот здесь, как советовал Юрий М указал явно диапазон.  
'Только данные не те, что в листе "база" тк. сначала с формула копируется, а потом уже преображается в значения.  
'Надо чтобы копировались уже только значения  
                     
                  End If ' закончили проверку  
           Next  
  End With
 
{quote}{login=KuklP}{date=29.06.2010 10:00}{thema=}{post}IvanANT, я Вам уже писал, не дразните модеров. Сколько Ваших файлов из-за размера удалили"и тема куда-то пропала:("? И мне не хочется по ушам получать за помощь нарушителям. Ждите, Вам ответят. Но уже не я.{/post}{/quote}  
Отлично. Людям свойственно исправляться, я прочитал правила, освежил память и исправился. выложил в архиве. Удаляли файл 3 раза. А вот руку помощи не протягивать  - это на вашей совести. Модераторы, думаю, люди неглупые  и справедливые и Вас бы в любом случае не наказали, меня могли.  
 
Hugo, Вы решили задачу в одну строку!!! спасибо. И работает и мне (ученику) понятно.
 
не подписался. Это я Ivanant
 
Здравствуйте, уважаемый Форум.  
1)Я посмотрел несколько "переписок" на подобные темы. Почти везде использован метод:    
Range_источник.Copy Range_приёмник ,  
причем "приёмник" может находиться на другом листе. В моей программе в одной процедуре этот метод срабатывает (правда, в пределах одного листа), а в другой не хочет, хотя всё делаю аналогично. Например, строка  
 
Worksheets.Item("Семь").Range(Cells(1, 22), Cells(i - 1, 23)).Copy Worksheets.Item("Затухание").Range(Cells(1, 1), Cells(i - 1, 2)) [это идёт одной строкой, значение i определено]
 
вызывает сообщение "Run-time error '1004' Application-defined or object-defined error".    
 
2) Аналогичный случай с методом Range.Sort - даёт ту же ошибку.  
 
В чём тут может быть хитрость?
 
надо указывать лист перед каждым RANGE и CELLS  
 
Worksheets("Семь").Range(Worksheets("Семь").Cells(1, 22), Worksheets("Семь").Cells(i - 1, 23)).Copy Worksheets("Затухание").Range(Worksheets("Затухание").Cells(1, 1), Worksheets("Затухание").Cells(i - 1, 2))  
 
Или так:  
 
with Worksheets("Семь")  
.Range(.Cells(1, 22), .Cells(i - 1, 23)).Copy Worksheets("Затухание").Cells(1)  
end with
Страницы: 1
Читают тему
Наверх