Excel UserForm Многострочный текстовое поле обрезает текст - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть многострочное текстовое поле, включенное в рамку в пользовательской форме проекта Excel VBA.

Макс. Длина установлена ​​на 0. IntegralHeight = True. Wordwrap = True. Допускается вертикальная полоса прокрутки.

Во время выполнения, когда я представляю форму, содержимое текстового поля усекается после 440 символов. Я по-прежнему могу вводить больше текста, и вертикальная полоса прокрутки срабатывает хорошо, и даже когда я сохраняю содержимое текстового поля в ячейку на рабочем листе - весь текст сохраняется нормально.

Во время разработки я могу установить для свойства Text (значение элемента управления по умолчанию) столько символов, сколько мне нужно, и они отображаются правильно во время разработки, но во время выполнения - оно усекается в презентации (все еще завершено в время проектирования).

Пробовал установить MaxLength на 10000 - без помощи.

В этом проекте у меня есть другие формы с многострочными текстовыми полями, в которых такое поведение отсутствует, - все работает нормально.

Есть идеи, почему это происходит?

Excel 2016 с последними обновлениями в Windows 10.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Спасибо всем за совет.

Я нашел проблему.

У меня есть общая функция для форматирования элементов управления в формах на основе таблицы, содержащей строки форматирования. Применение «общего» форматирования к этому многострочному текстовому полю (как значение по умолчанию для отсутствующей записи форматирования в таблице) каким-то образом вызвало это усечение.

Теперь я пропускаю элементы управления форматированием, если в таблице вообще не найдено записей.

Воспроизвести:

В чистой книге создайте UserForm1, добавьте одно многострочное текстовое поле с вертикальной полосой прокрутки и назовите его «txtTest».

Скопируйте это как событие Init формы:

Private Sub UserForm_Initialize()
    Me.txtTest.Value = "Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs. The passage is attributed to an unknown typesetter in the 15th century who is thought to have scrambled parts of Cicero's De Finibus Bonorum et Malorum for use in a type specimen book. It usually begins with: " & Chr(10) & _
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." & Chr(10) & Chr(10) & _
        "The purpose of lorem ipsum is to create a natural looking block of text (sentence, paragraph, page, etc.) that doesn't distract from the layout. A practice not without controversy, laying out pages with meaningless filler text can be very useful when the focus is meant to be on design, not content. " & Chr(10) & Chr(10) & _
        "The passage experienced a surge in popularity during the 1960s when Letraset used it on their dry-transfer sheets, and again during the 90s as desktop publishers bundled the text with their software. Today it's seen all around the web; on templates, websites, and stock designs. Use our generator to get your own, or read on for the authoritative history of lorem ipsum."

    Me.txtTest.Value = Format(Me.txtTest.Value, "General")
End Sub
0 голосов
/ 01 ноября 2018

Я пытался сделать это в своем Excel 2016 с последними обновлениями в Windows 10, и он работал правильно.

Что вы можете сделать, это удалить пользовательскую форму, создать новую свежую пользовательскую форму и попробовать сделать это там. Возможно, в этой пользовательской форме есть какие-то проблемы с кодированием, поэтому рекомендуется создать новую.

Если есть сомнения, вы можете спросить меня:)

Надеюсь, это поможет!

...