Страницы: 1
RSS
копирование и объединение ячеек программой VBA
 
После вставки (Insert) строки таблицы нужно скопировать форматы исходной строки в новую строку и объединить несколько ячеек в этой новой строке.  
Проделал все это макрорекордером - все вроде понятно, но когда пишу программу нужно обойтись без SELECT как при копировании диапазона (RANGE), так и при объединении 3-х ячеек в новой строке.  
Что-то не получается. Просмотрел Help VBA в Excel, там написано, нобез примеров.  
 
Помогите, плиз!!!
 
Код макрорекодера покажите, а то так не понятно
 
{quote}{login=webley}{date=22.10.2010 12:49}{thema=}{post}Код макрорекодера покажите, а то так не понятно{/post}{/quote}  
 
Файл прикрепил.  
Нужно без SELECT
 
так?  
   Range("D7:H7").Insert Shift:=xlDown  
   Range("D7:F7").MergeCells = True
 
{quote}{login=webley}{date=22.10.2010 01:19}{thema=}{post}так?  
   Range("D7:H7").Insert Shift:=xlDown  
   Range("D7:F7").MergeCells = True{/post}{/quote}  
 
Нет.    
Вот строка (в этой строке формируется адрес диапазона Range):  
Worksheets("Накладная").Range("B" + Trim(CStr(IndBill)) + ":" + "C" + Trim(CStr(IndBill))).Merge = True  
 
Ошибка. Пишет: Объект не поддерживает это свойство или метод.
 
Не глядя (нет 2007) - попробуйте вместо + использовать &.
 
Хотя нет, не в этом дело было.  
Так работает (оба варианта):  
 
Worksheets("Накладная").Range("B" + Trim(CStr(IndBill)) + ":" + "C" + Trim(CStr(IndBill))).MergeCells = True  
Worksheets("Накладная").Range("B" & Trim(CStr(IndBill)) & ":C" & Trim(CStr(IndBill))).MergeCells = True
 
вот и я хотел сказать - я писал MergeCells, а не Merge...
 
Все заработало!!!  
Большое всем спасибо.  
Действительно, я невнимательно прочел первый ответ webley, поэтому и не пошло.  
 
А как насчет копирования и вставки форматов (выравнивание и т.д)???
 
{quote}{login=mzm}{date=22.10.2010 02:54}{thema=}{post}Все заработало!!!  
Большое всем спасибо.  
Действительно, я невнимательно прочел первый ответ webley, поэтому и не пошло.  
 
А как насчет копирования и вставки форматов (выравнивание и т.д)???{/post}{/quote}  
 
На основе Вашего первоначального примера:  
   Range("D7:H7").Insert Shift:=xlDown  
   Range("D8:H8").Copy  
   Range("D7:H7").PasteSpecial Paste:=xlPasteFormats  
   Application.CutCopyMode = False
 
Спасибо, работает.  
Но есть еще одна проблема (последняя ли?)  
Записываю информацию в ячейку, ширина столбца при этом меньше, чем может уместиться в ячейке. Делаю перенос по словам. Все в порядке, высота строки увеличивается и вся информация при этом видна. Но высота строки слишком большая.    
Делаю объединение 2-х соседних ячеек и перенос по словам. Все кончилось. Объединение произошло, высота 2-х объединенных ячеет минимальна и выводится только одна строки информации. Если снимаю объединение - в 1-ой ячейке вся инфа видна, но высота опять очень большая.  
Использую при всех манипуляциях MERGE, AUTOFIT, WRAPTEXT. Ничего не помогпет
Страницы: 1
Читают тему
Наверх