Страницы: 1
RSS
Автоподбор высоты строки по тексту
 
Добрый день!
Вопрос вроде бы банальный, но сам решить не смог и поиск не дал результатов.

Пример: в Ячейке A1 длинный текст, стоит перенос текста и автоподбор работает.
В ячейке B1 ссылка на A1 (=A1). В B1 так же стоит перенос текста, но при вводе длинного текста в A1 получается что в A1 автоподбор работает, а в B1 нет...
Макросы использовать не хотелось бы...

Пример во вложении

P.S. Office 2007
 
Поставьте курсор между заголовками 2 и 3 строк, чтобы он превратился в "стрелки вверх-вниз" и сделайте двойной клик. Автоподбор сработает.
Можете после нескольких изменений на листе выделить все и так же кликнуть между любыми двумя строками.
 
Конечно такой вариант знаю, но я не уточнил, что объем рассчитываемых данных весьма велик и при каждой операции щелкать придется огого...
 
:?:
Цитата
Andrey K пишет: ... щелкать придется огого...
Цитата
Andrey K пишет: ... Макросы использовать не хотелось бы...
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Z, Очень содержательный ответ, вы, видимо, знаете о том, что решения без макросов не существует? Я правильно понял?
 
Andrey K, если Вы знаете, то почему задаете глупые вопросы? Действия можно совершить только макросом или ручками. По сути, на форуме (старом) лежит надстройка от nerv по автоподбору высоты ячеек.
 
Andrey K правильно поняли.  :)
 
Igor67, По-вашему, вопрос о том, существует ли решение без макросов или нет является глупым? Я так не считаю.
В любом случае всем спасибо, буду макросами решать проблему
 
Andrey K,  Ваша реакция на ответ не однозначно понимается... Вот ссылка где лежит вышеописанная надстройка от nerv  http://excelvba.ru/programmes/AutoFit, тему на форуме не искал, но она есть и варианты решений открыты.
 
Вариант с надстройкой не рассматривается, т.к. файл будет использовать на очень большом количестве компьютеров, должно быть максимально надежно и просто
Изменено: Andrey K - 12.04.2013 12:23:14
 
не работает в 2013...все пальцы за 2 дня уже стёр в поисках решения ((((((
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack_Famous, бедные пальцы - не хватило уже их длинны чтобы файл-пример приложить. ;)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Действительно))))
Нужно, чтобы я мог придать ячейке или диапазону ячеек (в том числе объединённых) свойство саморастягиваться по высоте (фиксированная ширина) при измении (обновлении) данных в ней. Она должна это делать автоматически при любом изменении данных в ней, т.к. объём данных бывает просто огромным и "подтягивать" ячейки каждого документа вручную очень долго. Замое печальное, что во всех обсуждениях по этой теме направляют к 2 источникам: http://excelvba.ru/programmes/AutoFit#comment-5048 и форум http://planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=22401&PAGEN_1=4
P.S.: Надстройка от nerv нигде, кроме как в редакторе макросов не отображается.  
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack_Famous, в Вашем случае достаточно изменить форматирование выделенных ячеек: убрать объединение, поставить по центру выделения и перенос.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
За это большое спасибо - не знал, что так можно (интересно, как границу по ширине определяет...).
Однако: негодные правила оформления актов требуют выравнивания по левому краю и остаётся проблема с ручным изменением высоты (щелканье по строкам).
Вторую проблему решить можно записью макроса простым макрорекордером, но я хочу связать это с вот такой надстройкой пакетного заполнения и вывода (http://excelvba.ru/programmes/FillDocuments), а она уже потребует перед выводом автоподбора по высоте - иначе каша ((((((
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack_Famous, могу предложить следующий вариант действий для макроса:
делаем копию целевого листа, например, в нов. кн.;
запоминаем подобранную высоту целевых строк (там где предложил по центру выд. с переносом);
объединяем, выравниваем в нужную сторону, меняем высоту на запомненную;
дальше поступаете с новой книгой как Вам угодно.
Возможно, я никогда не пользовался, а только слышал о таком, сделать форму в ворде и заполнять её через слияние. (я этого никогда не делал, только слышал, что такое возможно)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
На самом деле, заполнение Ворда через {ПОЛЯ} несложная штука. Попробую))) спасибо большое за помощь - надеюсь, что и проблему с ячейками решу)))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Проблема с выравниванием решена при помощи создания доп. столбца, по которому подбирается высота ячеек способом JayBhagavan, а строка документа не меняется (объединена, выравнивается по левому краю......
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack_Famous, код можно и сократить.
Код
1
2
3
4
5
6
Sub Fill_АОСР()
     Sheets("BL_АОСР").Select
    Cells.EntireRow.AutoFit
ActiveWindow.SelectedSheets.PrintOut Copies:=5, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Jack_Famous, я ошибочно удалил Ваше сообщение вместо своего. Приношу свои извинения. Если есть необходимость - продублируйте.
 
Юрий М, да ничего - если что спросят ))) JayBhagavan, я в макросах, конечно, не шарю, но Вы забыли вернуться на BD - лист с данными для заполнения, а это важно, т.к. в этом случае всё сводиться к нажатию на стрелочку вниз, затем на кнопку запуска макроса....очень быстро и удобно получается
Изменено: Jack_Famous - 22.06.2015 15:53:22
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack_Famous, а зачем на него возвращаться, если с него никуда не уходили?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Потому что
Код
1
2
Sheets("BL_АОСР").Select '- выбрать лист BL_АОСР
'а галочки мы ставим (выбираем данные для заполнения то есть) на DB_АОСР. DB - Data Base; BL - Blank (шаблон)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
И снова здравствуйте! В процессе оптимизации и сёрфинга на соответствующую тему нашёл вот какой макрос по адресу http://blog.contextures.com/archives/2012/06/07/autofit-merged-cell-row-height/
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Sub Worksheet_Change(ByVal Target As Range)Dim MergeWidth As Single
Dim cM As Range
Dim AutoFitRng As Range
Dim CWidth As Double
Dim NewRowHt As Double
Dim str01 As String
str01 = "OrderNote"
 
  If Not Intersect(Target, Range(str01)) Is Nothing Then
    Application.ScreenUpdating = False
    On Error Resume Next
    Set AutoFitRng = Range(Range(str01).MergeArea.Address)
 
    With AutoFitRng
      .MergeCells = False
      CWidth = .Cells(1).ColumnWidth
      MergeWidth = 0
      For Each cM In AutoFitRng
          cM.WrapText = True
          MergeWidth = cM.ColumnWidth + MergeWidth
      Next
      'small adjustment to temporary width
      MergeWidth = MergeWidth + AutoFitRng.Cells.Count * 0.66
      .Cells(1).ColumnWidth = MergeWidth
      .EntireRow.AutoFit
      NewRowHt = .RowHeight
      .Cells(1).ColumnWidth = CWidth
      .MergeCells = True
      .RowHeight = NewRowHt
    End With
    Application.ScreenUpdating = True
  End If
 
End Sub
в отличии от того же"nerv", кода не скрывает, что позволяет подбить "под себя" или же наоборот - сделать более универсальным, как в моём случае... Так вот, как я понял, работает он следующим образом: в строке str01 = "OrderNote" мы указываем имя объединённой ячейки, которую нам нужно динамически обновлять без участия человека в зависимости от содержимого. В версии 2013 макрос работает на ура, без нареканий. Теперь вопрос - как вместо фиксированного названия объединённой ячейки в макросе, при запуске вылезал бы MsgBox типа
Цитата
введите через ";" названия объединённых ячеек, нуждающихся в автоподборе
Соответственно, затем этот список встраивается в макрос...
А также как решить проблему, чтобы каждый раз при вызове этого макроса в пределах одной книги список сбрасывался (дабы не возникало путаницы при добавлении/удалении объединённых ячеек).
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Читают тему
Loading...