Страницы: 1
RSS
Изменение границ ячеек по образцу VBA, Нужно сделать границы по образцу
 
Привет. Вставляю в имеющуюся таблицу в конец данные. Нужно протянуть формат границ от последней ячейки изначальной таблицы до конца новой таблицы.
Имеется такой код:    
Код
    lastrow = Cells(3, 5).End(xlDown).Row + 1
    result.Range("result").SpecialCells(xlCellTypeVisible).Copy
    finalWB.Cells(lastrow, 1).PasteSpecial Paste:=xlPasteValues
    lastRowLast = Cells(3, 5).End(xlDown).Row
    finalWB.Range("M" & lastrow - 1 & ":AA" & lastrow - 1).AutoFill Destination:=finalWB.Range("M" & lastrow - 1 & ":AA" & lastRowLast), Type:=xlFillDefault
    finalWB.Range("B" & lastrow & ":L" & lastRowLast).Borders.LineStyle = finalWB.Range("B" & lastrow - 1).Borders.LineStyle

Но он не правильно протягивает формат границ ячеек. Итог на скриншоте. Помогите найти решение.
 
Hellmaster мне кажется вы попутали что-то (посмотрите в редакторе какие значения они выдают). Посмотрите с каких книг или листов они определяются.
Код
lastrow и 
lastRowLast
Изменено: skais675 - 29.03.2019 15:47:21
 
'lastrow работает в файле finalWB, который я определил для итогового файла,итогового листа.
   lastrow = Cells(3, 5).End(xlDown).Row + 1
'result я определил как переходный файл между выгрузкой и итоговым файлом(в нем все манипуляции с данными 'происходят). в нем есть лист result с таблицей result.
   result.Range("result").SpecialCells(xlCellTypeVisible).Copy
   finalWB.Cells(lastrow, 1).PasteSpecial Paste:=xlPasteValues
'задаю lastrowlast последнюю строчку после вставки данных в итоговый файл. то есть lastrow это конечная строка таблицы до 'вставки,lastrowlast это конечная строка 'таблицы после вставки новых данных
   lastRowLast = Cells(3, 5).End(xlDown).Row
   finalWB.Range("M" & lastrow - 1 & ":AA" & lastrow - 1).AutoFill Destination:=finalWB.Range("M" & lastrow - 1 & ":AA" & lastRowLast), Type:=xlFillDefault
   finalWB.Range("B" & lastrow & ":L" & lastRowLast).Borders.LineStyle = finalWB.Range("B" & lastrow - 1).Borders.LineStyle


lastrow и lastrowlast нормально работают в строке протягивания формул (autofill Destination), но не правильно для протягивания формата границ ячеек.  
Изменено: Hellmaster - 29.03.2019 16:08:42
 
Hellmaster Был бы пример разобрались бы сразу.
 
Result - откуда тянуть данные
FinalWB - куда вставить данные
Формат границ ячеек нужно протянуть от столбца B до столбца L
Изменено: Hellmaster - 29.03.2019 16:45:40
 
Hellmaster где же макрос?
Как вариант
Код
Range("B" & lastrow & ":L" & lastRowLast).Borders.LineStyle = Range("B" & lastrow - 1).Borders.LineStyle
Range("B" & lastrow & ":L" & lastRowLast).Borders.Color = Range("B" & lastrow - 1).Borders.Color
Range("B" & lastrow & ":L" & lastRowLast).Borders.TintAndShade = Range("B" & lastrow - 1).Borders.TintAndShade
Range("B" & lastrow & ":L" & lastRowLast).Borders.Weight = Range("B" & lastrow - 1).Borders.Weight
или так проще
Код
.Copy.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
Изменено: skais675 - 29.03.2019 17:46:45
 
skais675 , спасибо большое. В полном макросе есть конфиденциальная информация. Прошу прощения, что не прислал вырезку из макроса, мне показалось, что куска из первого сообщения хватит.
Еще раз спасибо. И если не сложно, можете объяснить почему LineStyle не сработал? Это же вроде включает в себя и цвет и тени и толщину?
 
Hellmaster
Цитата
Hellmaster написал:
LineStyle не сработал? Это же вроде включает в себя и цвет и тени и толщину?
Задает тип линии - сплошная, пунктирная и т.д. Все остальное я уже показал.
Страницы: 1
Наверх