Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

20 Сентябрь 2020, 20:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: Функция Msgbox - не влезает большой текст  (Прочитано 3583 раз)
0 Пользователей и 1 Гость смотрят эту тему.
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 3 014


iMac, LibreOffice и Apache OpenOffice


« Ответ #55033: 24 Июнь 2020, 22:39 »

Обратите внимание, что InputBox не подходит для вставки текста с абзацами, т.к. он однострочный. Я заменил его на строку с переводами строк.
Код:
Sub CheckStringProc()
Dim MaxChar%, strText$, tt(), s$
strText = "Функция InsertDelWord, хоть и не большая, но мне почему-то думается, что есть стандартная функция или другое решение, но ничего не нашёл. Да, особо и не искал - эта функция на полчаса работы." & chr(10) & chr(10) & _
"Может быть, и функцию SplitBigString, также, можно как-то по другому, попроще 'решить' - хотя и так не очень сложно получилось. И получились они немного 'универсальными' - можно задавать различные разделители." & chr(10) & _
"Возможно, эти функции можно было через регулярные выражения 'пропустить', но я, пока, ими ещё не занимался." ' Это текст с форума."

'strText = InputBox ("Введите любой текст: ", "Проверка функции CorrectText")
MaxChar = InputBox ("Введите число - ограничение на длину строки: ", "Проверка функции CorrectText")
tt() = CorrectText(strText$, MaxChar%)
s = "Был введен текст: " & chr(10) & strText & chr(10) & String(30, "-") & chr(10) & _
"Ограничение по количеству символов в строке: " & MaxChar & chr(10) &_
"Длина введенного текста: " & Len(strText) & chr(10) & chr(10) & _
"ПОЛУЧИЛОСЬ =>" & chr(10) & "Новый текст: " & chr(10) & tt(0) & chr(10) & String(30, "-") & chr(10) & _
"Длина полученного текста: " & Len(tt(0)) & chr(10) & "Максимальная длина строки: "  & tt(1)
Msgbox s
End Sub

Function CorrectText(strText$, MaxChar%)
Dim newText$, i%, j%, lf%, limit%
newText = replace(strText, chr(13), chr(10))
limit = MaxChar
Do While j < len(strText)
j = InStr(i+1, newText, " ")
If j = 0 Then j = len(strText) +1
If j > limit Then
mid(newText, i, 1, chr(10))
limit = i + MaxChar
lf = InStr(i+1, newText, chr(10))
If lf = 0 Then lf = len(strText) +1
If limit > lf Then limit = lf + MaxChar
End If
i = j
Loop
CorrectText = array(newText, "Заглушка")
End Function
Записан

Страниц: « 1 2 3   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!