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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 10:27   #1
ogololobov2009
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию автоформатирование

ДОбрые день.

Где-то читал, но нигде не могу найти..

Вообщем надо чтоб при вводе определенного значения в ячейку, она автоформатировалась в нужный мне формат.

Например пишем в ячейку "555", нажимаем энтер, а оно форматируется в "кв. 555"

Как это реализовать?
ogololobov2009 вне форума Ответить с цитированием
Старый 29.04.2011, 10:53   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Пользовательский формат.
формат ячеек
последний пункт "все форматы"
в поле "Тип:" впишите
"кв. "#
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.04.2011, 12:18   #3
ogololobov2009
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Отлично!

Большое спасибо!

А как-то можно сделать логическое форматирование? Ну например, если вводишь число, начинающееся на "5" то форматируется как "Кв - 5**", а если начинается, допустим, с "7" - то "акт №7**"
ogololobov2009 вне форума Ответить с цитированием
Старый 29.04.2011, 12:25   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Сомневаюсь, что пользовательский форматом или вообще форматом можно сделать.
Макросом можно - по событию изменения диапазона анализируем изменённое значение и соответственно дописываем впереди префикс или может быть можно поменять этой ячеейке пользовательский формат, чтоб само значение не менялось.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.04.2011, 13:16   #5
ogololobov2009
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Да уж, к сожалению в макросах я ноль.

Вот нашел похожий макрос. http://www.planetaexcel.ru/forum.php?thread_id=26561

Может подскажите как его переделать под мой пример?

Заранее благодарен!!
ogololobov2009 вне форума Ответить с цитированием
Старый 29.04.2011, 13:20   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Нет, это не то.
Скорее такой код можно переделать:

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

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("A2:A100")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Target.Offset(, 1)
.NumberFormat = "m/d/yyyy"
.Value = Date
.EntireColumn.AutoFit
End With
Application.EnableEvents = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.04.2011 в 16:30.
Hugo121 вне форума Ответить с цитированием
Старый 29.04.2011, 14:39   #7
ogololobov2009
Пользователь
 
Регистрация: 24.01.2011
Сообщений: 41
По умолчанию

Так, во что-то въезжаю, но все же необходима помощь.

Цель такая, вводятся два формата чисел. Необходимо, чтоб все, которые начинаются на "26" оставались без изменения, остальные - перед числом ставились символы "ПЗ - ".

Заранее простите за КАПС. Цветом не выделяется.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub ЧТО ДЕЛАЕТ ЭТА СТРОКА?
If Intersect(Target, Range("E5:E100")) КАК Я ПОНЯЛ, ЭТО ДИАПАЗОН, В КОТОРОМ ОТСЛЕЖИВАЮТСЯ ЗНАЧЕНИЯ Is Nothing Then Exit Sub ЕСЛИ НЕТ ДАННЫХ, ЗНАЧИТ ЗАКОНЧИТЬ МАКРОС?
Application.EnableEvents = False ЧТО ДЕЛАЕТ ЭТА СТРОКА?
With Target.Offset(, 1) ЧТО ДЕЛАЕТ ЭТА СТРОКА?
.NumberFormat = "m/d/yyyy" КАК Я ПОНЯЛ, ЭТО ЗАДАЕТСЯ ФОРМАТ ЯЧЕЙКИ. В МОЕМ СЛУЧАЕ БУДЕТ "ПЗ - "#
.Value = Date ЭТО ЗНАЧЕНИЕ ФОРМАТА? КАКОЕ В МОЕМ СЛУЧАЕ?
.EntireColumn.AutoFit ЭТО НАВЕРНО ЧТО-ТО ВЫРАВНИВАЕТ..
End With
Application.EnableEvents = True ЧТО ДЕЛАЕТ ЭТА СТРОКА?
End Sub
ogololobov2009 вне форума Ответить с цитированием
Старый 29.04.2011, 15:10   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Application.EnableEvents = False - отключение обработки событий - оставить!
With Target.Offset(, 1) - сдвиг вправо - не нужно!
.Value = Date - заносит значение - можно использовать
NumberFormat - нужно заменить на customFormat что-ли, запишите синтаксис рекордером и посмотрите.
Нет - записал, получилось
Код:
Selection.NumberFormat = """ПЗ - ""#"
Остальное поняли.
Извините, убегаю..
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.04.2011 в 16:29.
Hugo121 вне форума Ответить с цитированием
Ответ


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