Страницы: 1
RSS
Подскажите начинающему, PLEASE)))
 
У меня вопрос, который я не могу уже неделю понять копая поиск вашего сайта и всего интернета. Вроде мелочь, а я не могу сделать никак.  
Макрос заносящий накладные в таблицу. Раньше было с очищением старых накладных, а надо сделать чтобы ничего не стералось, а добавлялось ниже последней заполненной.  
With Sheets("123")  
     'LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
     'Range(.Cells(4, 2), .Cells(LastRow + 1, 2)).ClearContents  
     LastRow = 4  
     For i = 4 To iLastRow  
 
Последняя строчка указана 4, а как должна выглядеть lastrow чтобы он понимал что шапка кончается после 4 строки, но после того, как вносится накладная, следующая должна добавляться ниже этой накладной??? Заранее благодарен
 
без примера трудно сказать
 
{quote}{login=}{date=13.10.2010 10:49}{thema=}{post}без примера трудно сказать{/post}{/quote}  
 
Dim Summa As Double  
Dim iLastRow As Long  
Dim LastRow As Long  
Application.ScreenUpdating = False  
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row  
Summa = 0  
  With Sheets("123")  
     'LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
     'Range(.Cells(4, 2), .Cells(LastRow + 1, 2)).ClearContents  
     LastRow = 4  
     For i = 4 To iLastRow  
        If Cells(i, 13) <> "" Then  
           Range(Cells(i, 1), Cells(i, 2)).Copy  
           .Cells(LastRow + 1, 2).PasteSpecial Paste:=xlPasteValues    
           Range(Cells(i, 5), Cells(i, 5)).Copy  
           .Cells(LastRow + 1, 4).PasteSpecial Paste:=xlPasteValues    
           Range(Cells(i, 13), Cells(i, 13)).Copy  
           .Cells(LastRow + 1, 5).PasteSpecial Paste:=xlPasteValues    
           Range(Cells(i, 14), Cells(i, 14)).Copy  
           .Cells(LastRow + 1, 6).PasteSpecial Paste:=xlPasteValues    
           Range(Cells(i, 38), Cells(i, 38)).Copy  
           .Cells(LastRow + 1, 7).PasteSpecial Paste:=xlPasteValues    
           Range(Cells(i, 15), Cells(i, 18)).Copy  
           .Cells(LastRow + 1, 8).PasteSpecial Paste:=xlPasteValues    
           LastRow = LastRow + 1  
        End If  
     Next  
End With    
End Sub  
 
а файл большой и в нем очень много лишнего. Мне просто нужно понять как сделать внесение с прибавлением в конкретном коде...
 
Так вот же закомментировано  
LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
это последняя заполненная строка по 4-му столбцу.  
Подберите столбец, где 100% будет заполнена последняя ячейка (ну там дата пишется или номер какой) и после заполнения накладной заново кодом определяйте это число (например при следующем запуске или в следующем цикле).  
Ну а там уже как надо - или сразу на следующей пишите данные, или отступите ниже, или шапку постоянную добавьте
 
{quote}{login=Hugo}{date=13.10.2010 10:55}{thema=}{post}Так вот же закомментировано  
LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
это последняя заполненная строка по 4-му столбцу.  
Подберите столбец, где 100% будет заполнена последняя ячейка (ну там дата пишется или номер какой) и после заполнения накладной заново кодом определяйте это число (например при следующем запуске или в следующем цикле).  
Ну а там уже как надо - или сразу на следующей пишите данные, или отступите ниже, или шапку постоянную добавьте{/post}{/quote}  
 
вот вот... я и это ставил. Проблема именно с тем, что он не добавляет, а все равно заменяет. Именно как ему дать понять пересчитать при следующем цикле. Потому что с этим кодом он заменяет и с тем, что вы предложили тоже...
 
...  
'LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
'Range(.Cells(4, 2), .Cells(LastRow + 1, 2)).ClearContents  
LastRow = 4  
...  
Уберите LastRow = 4
 
{quote}{login=}{date=13.10.2010 11:05}{thema=}{post}...  
'LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
'Range(.Cells(4, 2), .Cells(LastRow + 1, 2)).ClearContents  
LastRow = 4  
...  
Уберите LastRow = 4{/post}{/quote}  
 
Простите гада... Разобрался... все правильно подсказали... И правильно я делал, просто в процессе изготовления макроса под параметры поставил козел циферку в строку 2345, и он добавлял все ниже... Ощущения как будто пошел в туалет и крышку не поднял))))) Еще раз спасибо))))
 
Так попробуйте.  
Ну а копирование лучше так сделать, и быстрее, и понятнее.  
Вы ведь только значения копируете:  
 
With Sheets("123")  
LastRow = .Cells(Rows.Count, 4).End(xlUp).Row  
'Range(.Cells(4, 2), .Cells(LastRow + 1, 2)).ClearContents  
For i = 4 To iLastRow  
If Cells(i, 13) <> "" Then  
.Cells(LastRow + 1, 2) = Cells(i, 1)  
.Cells(LastRow + 1, 3) = Cells(i, 2)  
.Cells(LastRow + 1, 4) = Cells(i, 5)  
.Cells(LastRow + 1, 5) = Cells(i, 13)  
.Cells(LastRow + 1, 6) = Cells(i, 14)  
.Cells(LastRow + 1, 7) = Cells(i, 38)  
.Cells(LastRow + 1, 8) = Cells(i, 15)  
.Cells(LastRow + 1, 9) = Cells(i, 16)  
.Cells(LastRow + 1, 10) = Cells(i, 17)  
.Cells(LastRow + 1, 11) = Cells(i, 18)  
LastRow = LastRow + 1  
End If  
Next  
End With
Страницы: 1
Читают тему
Наверх