Страницы: 1 2 След.
RSS
как ограничить количество уже введенных символов в ячейке
 
В exel вставляется таблица из другого документа. В колонке дата должны быть данные в формате ДД.ММ.ГГГГ, но данные, которые были вставлены могут быть и . .ГГГГ, и .ММ.ГГГГ, и ДД.ММ.ГГГГ1. Короче говоря, хотелось бы ограничить количество символов в каждой ячейке в указанном диапозоне.
 
Данные-Проверка данных-Длина текста  
Только это уже не для формата "даты".
 
{quote}{login=}{date=07.04.2010 04:16}{thema=}{post}Данные-Проверка данных-Длина текста  
Только это уже не для формата "даты".{/post}{/quote}  
Это проверка работает при вводе в ячейку, мне надо ограничить количество уже введенных символов
 
Так и вставляйте данные сразу в нужном формате.
 
{quote}{login=Юрий М}{date=07.04.2010 04:23}{thema=}{post}Так и вставляйте данные сразу в нужном формате.{/post}{/quote}  
данные вставляются копипастом... если будет число 01.01.20102010, к примеру, то формат ячейки тут не поможет
 
Тогда обрабатывайте вставленные данные макросом. Только ему (макросу) нужно будет объяснить, что делать с такими вот данными "01.01.20102010". Или ещё, какие там у Вас есть. Т.е. нужен набор типичных ошибок, иначе трудно всё привести к дате. А формат отображения этих дат - это уже дело техники.
 
Я понимаю, что макросом это надо, но в инете ничего подобного не нашел... а мне надо хотя бы ограничить макросом количество символов в диапозоне ячеек. Чтоб было не больше 10 символов.
 
uropb, сайчас Вам напишу (напишут) макрос, но 99,9%, что он Вам не подойдёт, так как не видим Вашу таблицу. Ведь там не во всех ячейках нужно ограничивать длину до 10 символов... А Вы упорно не хотите её показать, и всё рассказываете и рассказываете. Больше сюда не заглядываю.
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Target = [d2] Then 'вместо d2 свою ячейку
If Len(Target) > 10 Then  
Target = ""  
MsgBox "Пшел нафег, больше 10 низя"  
End If  
End If  
End Sub  
 
вставлять в модуль листа (правой мыши по ярлычку листа - исходный текст)
 
{quote}{login=Юрий М}{date=07.04.2010 05:09}{thema=}{post}uropb, сайчас Вам напишу (напишут) макрос, но 99,9%, что он Вам не подойдёт, так как не видим Вашу таблицу. Ведь там не во всех ячейках нужно ограничивать длину до 10 символов... А Вы упорно не хотите её показать, и всё рассказываете и рассказываете. Больше сюда не заглядываю.{/post}{/quote}  
Хм... как это не заглядываете? ща я табличку кину!
 
вот файлик с проблемкой
 
данные - проверка данных - дата
 
{quote}{login=Dophin}{date=07.04.2010 05:37}{thema=}{post}данные - проверка данных - дата{/post}{/quote}  
Это проверка работает при вводе в ячейку, мне надо ограничить количество уже введенных символов
 
Это как? Проверить длину и сообщить?
 
{quote}{login=Dophin}{date=07.04.2010 05:21}{thema=}{post}Private Sub Worksheet_Change(ByVal Target As Range)  
If Target = [d2] Then 'вместо d2 свою ячейку
If Len(Target) > 10 Then  
Target = ""  
MsgBox "Пшел нафег, больше 10 низя"  
End If  
End If  
End Sub  
 
вставлять в модуль листа (правой мыши по ярлычку листа - исходный текст){/post}{/quote}  
 
вставляю свою ячейку вместо d2  - ошибка при выполнении макроса  
показывает строку "If Target = [d2] Then 'вместо d2 свою ячейку"
 
{quote}{login=vikttur}{date=07.04.2010 05:54}{thema=}{post}Это как? Проверить длину и сообщить?{/post}{/quote}  
проверить длину и обрезать лишнее, если можно
 
=ПСТР(A1;1;10)  
=ЛЕВСИМВ(A1;10)  
С последующей заменой данных на исправленные.  
Может, все проще - форматом отобразить нужное количество при неизменных данных?
 
{quote}{login=vikttur}{date=07.04.2010 06:01}{thema=}{post}=ПСТР(A1;1;10)  
=ЛЕВСИМВ(A1;10)  
С последующей заменой данных на исправленные.  
Может, все проще - форматом отобразить нужное количество при неизменных данных?{/post}{/quote}  
Блин! А ведь это тоже вариант. Я думал, что формула мне не поможет... будет неудобно (много ручной работы)... количество таких ячеек с датами всегда меняется (может и больше 20000 быть), но если одним макросом не получится, то выбирать не приходится...
 
а формат не помогает
 
{quote}{login=vikttur}{date=07.04.2010 06:01}{thema=}{post}=ПСТР(A1;1;10)  
=ЛЕВСИМВ(A1;10)  
С последующей заменой данных на исправленные.  
Может, все проще - форматом отобразить нужное количество при неизменных данных?{/post}{/quote}  
С форматом не совсем понял, что можно сделать?
 
{quote}{login=uropb}{date=07.04.2010 05:55}{thema=Re: }{post}{quote}{login=Dophin}{date=07.04.2010 05:21}{thema=}{post}Private Sub Worksheet_Change(ByVal Target As Range)  
If Target = [d2] Then 'вместо d2 свою ячейку
If Len(Target) > 10 Then  
Target = ""  
MsgBox "Пшел нафег, больше 10 низя"  
End If  
End If  
End Sub  
 
вставлять в модуль листа (правой мыши по ярлычку листа - исходный текст){/post}{/quote}  
 
вставляю свою ячейку вместо d2  - ошибка при выполнении макроса  
показывает строку "If Target = [d2] Then 'вместо d2 свою ячейку"{/post}{/quote}
 
выложите Ваш измененный код) а лучшей файл с ним
 
{quote}{login=uropb}{date=07.04.2010 06:13}{thema=}{post}а формат не помогает{/post}{/quote}  
Например, формат ячейки "#  #  ".В ячейке отобразится не все число, а только часть, но само число неизменно.
 
Движок съел часть формата :)  
После решеток пробел (или два).
 
{quote}{login=Dophin}{date=07.04.2010 07:06}{thema=Re: Re: }{post}{quote}{login=uropb}{date=07.04.2010 05:55}{thema=Re: }{post}{quote}{login=Dophin}{date=07.04.2010 05:21}{thema=}{post}Private Sub Worksheet_Change(ByVal Target As Range)  
If Target = [d2] Then 'вместо d2 свою ячейку
If Len(Target) > 10 Then  
Target = ""  
MsgBox "Пшел нафег, больше 10 низя"  
End If  
End If  
End Sub  
 
вставлять в модуль листа (правой мыши по ярлычку листа - исходный текст){/post}{/quote}  
 
вставляю свою ячейку вместо d2  - ошибка при выполнении макроса  
показывает строку "If Target = [d2] Then 'вместо d2 свою ячейку"{/post}{/quote}
 
выложите Ваш измененный код) а лучшей файл с ним{/post}{/quote}  
файл с вашим кодом (и с кодом, который ниже от The_prist)
 
у меня все работает)
 
{quote}{login=Dophin}{date=08.04.2010 10:00}{thema=}{post}у меня все работает){/post}{/quote}  
Ну да, работат, если вручную вбивать в ячейки, но в моём случае данные не вбиваются, а втавляются с другой таблицы, которая приходит ко мне уже с косяками... и вот при вставке вылетает ошибка(((
 
{quote}{login=vikttur}{date=08.04.2010 09:12}{thema=}{post}Движок съел часть формата :)  
После решеток пробел (или два).{/post}{/quote}  
формат работает только при вводе, а когда данные уже есть - они не меняются... или я ошибаюсь? во всяком случае у меня именно так(
 
аа. а при вставке что надо сделать с некорректными ячейками? удалить, покрасит или еще где?
 
{quote}{login=Dophin}{date=08.04.2010 10:46}{thema=}{post}аа. а при вставке что надо сделать с некорректными ячейками? удалить, покрасит или еще где?{/post}{/quote}  
Пойти Геракловым путем и повторить его шестой подвиг... оставив только корректное.  
Z.
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
{quote}{login=The_Prist}{date=08.04.2010 11:04}{thema=}{post}Нашел косяк. Я переменной lRow значение не присвоил...Так будет работать:  
 
Sub Change_My_Shit_Data()  
Dim rCell As Range, lCol As Long, lRow As Long  
On Error Resume Next  
lCol = InputBox("Укажите столбец с данными", "Выбор данных")  
If lCol = 0 Or lCol > ActiveSheet.Columns.Count Then MsgBox "неверно указан столбец!", vbCritical, "Ошибка": Exit Sub  
lRow = InputBox("Укажите строку, с которой начать обработку", "Выбор данных")  
If lRow = 0 Or lRow > ActiveSheet.Rows.Count Then MsgBox "Неверно указана строка!", vbCritical, "Ошибка": Exit Sub  
On Error GoTo 0  
 
Application.ScreenUpdating = False: Application.Calculation = xlManual  
For Each rCell In Range(Cells(lRow, lCol), Cells(Cells(Rows.Count, lCol).End(xlUp).Row, lCol))  
rCell = Mid$(rCell, 1, 10)  
Next rCell  
Application.ScreenUpdating = True: Application.Calculation = xlAutomatic  
End Sub{/post}{/quote}  
запускаю макрос, вылетает окно InputBox, где указать столбец... указываю А:А или А1:А100, или А, всегда окно с ошибкой показывает(
Страницы: 1 2 След.
Читают тему
Наверх