Страницы: 1
RSS
Перенос строки внутри ячейки по нажатию Enter вместо Alt-Enter
 
Друзья, столкнулся с такой элементарной, но непросто проблемой:
Я делаю на заказ таблицу с VBA-кодом для ведения картотеки частного врача.
Заказчик (врач) попросил чтобы в тех ячейках, где вписывается диагноз и рекомендации, была реализована возможность по нажатию Enter вставлять принудительно перенос на следующую строку в той же ячейке (Аналогично, как это делает комбинация Alt+Enter).

Конечно, я ему могу порекомендовать жать Alt+Enter где ему надо, и не париться, но:
1. Его уровень знания ПК очень новичковый, он клавиатурными комбинациями не пользуется, даже Ctrl-C и т.п.
2. Очень хороший бюджет проекта, который позволяет ему "покапризничать"
Что я уже попробовал - естественно написал код, который захватывает нажатие Enter'a.
Несложно проанализировать содержимое ячейки и в конце прибавить символ переноса строки - chr(10).
Но если заказчик надумает поставить Enter в середине текста, вопреки его ожиданиям, перенос строки вновь допишется в конце.
Как тут быть?
 
Цитата
vanking пишет: если заказчик надумает поставить Enter в середине текста, вопреки его ожиданиям, перенос строки вновь допишется в конце
Почему в конце?
И как Ваш врач заканчивает тогда редактирование - стрелками?
 
Цитата
Юрий М пишет: Почему в конце?
Потому что после нажатия Enter'a редактирование ячейки завершается, и лишь потом запускается обработчик. С содержимым ячейки я работаю как с обычной текстовой строкой, а положение курсора, где был нажат Enter - неизвестно.
Цитата
И как Ваш врач заканчивает тогда редактирование - стрелками?
Tab'ом
 
А каким образом Enter нажимается в середине текста? Он в середину строки помещает курсор?
 
Цитата
Юрий М пишет: Он в середину строки помещает курсор?
Да. Он хочет работать с ячейкой по аналогии как с блокнотом. Ввёл текст, потом там где посчитал нужным, повставлял переносы строк для удобочитаемости, и распечатал. Клавиши со стрелками здесь работают в режиме навигации по тексту в ячейке.

Для наглядности, прикладываю скрин.
Как видно, ячейка куда вводится диагноз, еще и объединённая.

 
Наверное, всё же придётся обучить его комбинации клавиш Alt+Enter. Не думаю, что он совсем необучаемый))
Или вариант: на эту объединённую ячейку наложить "Надпись" - пусть себе переносит))
 
Проще было бы через форму решить, нет? Хотя переделывать на форму на полпути, конечно, не фонтан. Но, может быть, просто TextBox сгодится?
F1 творит чудеса
 
Цитата
Юрий М пишет: на эту объединённую ячейку наложить "Надпись"
с этого места поподробней - что имеется ввиду?))
Цитата
Максим Зеленский пишет: Но, может быть, просто TextBox сгодится?
TextBox - это как запасной вариант. Пока ищу более изящное решение, чтобы всё выглядело как обычный эксель)
Сейчас везде ищу вариант как можно вставить текст с помощью кода VBA, когда ячейка находится в режиме редактирования. Если кто-то сталкивался, буду благодарен)
Пока поиск говорит о том, что код VBA вообще не выполняется, когда любая ячейка находится в режиме редактирования
 
А что подробнее? Над ячейкой разместить "Надпись" или TextBox.
 
А эти элементы будут выводиться на печать?
 
Пока код у меня в таком состоянии, может, кому-то пригодится:
Текст, вставляемый в код листа:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Application.OnKey "~", "Abzac"
End Sub
Текст, вставляемый в модуль:
Код
Sub Abzac()
    Dim T As String
    T = ActiveCell.Value + Chr(10)
    Application.SendKeys "{F2}"
    ActiveCell.FormulaR1C1 = T
End Sub
 
Если укажете (в свойствах), то будут)
Страницы: 1
Наверх