Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2011, 09:58   #1
floriak
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию автоматически сокращать длину текста

Как сделать так чтобы, посмле копирования в ячейку текста (более 50 символов текста) автоматически в ячейку вносилились только первые 50. Или обрезался текст до 50 символов. Незнаю как правильно ето назвать.

Например есть текст в 70 символов. Мы его копируем в ячейку, а в ячейку попадает только первые 50?
Зарание благодарен.
floriak вне форума Ответить с цитированием
Старый 03.08.2011, 10:09   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если сделать для одного листа - в код листа (правый клик на ярлычке листа - Исходный текст):
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
On Error Resume Next
For Each c In Target.SpecialCells(xlCellTypeConstants, xlTextValues)
    If Len(c) > 50 Then c = Left(c, 50)
Next
End Sub
Если для всей книги, то в код объекта "ЭтаКнига" (ThisWorkbook):
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range
On Error Resume Next
For Each c In Target.SpecialCells(xlCellTypeConstants, xlTextValues)
    If Len(c) > 50 Then c = Left(c, 50)
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 03.08.2011 в 10:14.
Казанский вне форума Ответить с цитированием
Старый 03.08.2011, 10:12   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

в В1=ЛЕВСИМВ(A1; 50)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 03.08.2011, 10:19   #4
floriak
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию

Спасибо!
Только у меня получаеться на листе три столбца в одном нужно ограничить 50ю во втором 200 а в третьем 100. чтоб типа автоматом обрезало текст вставленый до определённого количества символов
floriak вне форума Ответить с цитированием
Старый 03.08.2011, 10:21   #5
floriak
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию

можно ли применить ето к конкретному столбцу? и если да то как? Спасибо!
floriak вне форума Ответить с цитированием
Старый 03.08.2011, 10:33   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

на листе три столбца в одном нужно ограничить 50ю во втором 200 а в третьем 100
Сразу об этом нельзя было написать?
Вот - не оптимально, но с минимальными изменениями.
Как и предыдущий вариант, работает при дновременном изменении многих ячеек.
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range, l&
On Error Resume Next
For Each c In Intersect(Target.SpecialCells(xlCellTypeConstants, xlTextValues), Sh.Range("A:C"))
    l = Choose(c.Column, 50, 200, 100)
    If Len(c) > l Then c = Left(c, l)
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.08.2011, 10:40   #7
floriak
 
Регистрация: 15.10.2009
Сообщений: 9
По умолчанию

Спасибо! только почему то не получилось(((

Может так лутше будет обьяснить.
Колонка А ограничена 50
Колонка В ограничена 200
Колонка Е ограничена 100

Чтоб срабатывало обрезание на данном количестве символов!
пРОСТИТЕ ЧАЙНИКА)))
floriak вне форума Ответить с цитированием
Старый 03.08.2011, 11:14   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Это мой последний пост в теме
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range, l&
On Error Resume Next
For Each c In Intersect(Target.SpecialCells(xlCellTypeConstants, xlTextValues), Sh.Range("A:B,E:E"))
    l = Choose(c.Column, 50, 200, , , 100)
    If Len(c) > l Then c = Left(c, l)
Next
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить длину листа. snowfrost Microsoft Office Excel 6 02.06.2011 11:42
Для созданного текста определить длину содержащейся в нем максимальной серии символов, отличных от букв. rusfin01 Помощь студентам 1 28.02.2011 10:25
проверить длину строки в js Даниил_глазко JavaScript, Ajax 5 26.12.2010 06:34
Как узнать длину текста в пикселях Don Karleone Общие вопросы Delphi 5 16.10.2010 15:51
Узнать длину строки Яр|/||< (^_^) Паскаль, Turbo Pascal, PascalABC.NET 2 22.09.2009 23:46