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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2009, 09:43   #1
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию VBA. Ячейка со списком значений.

Подскажите пожалуйста, как силами VBA создать в ячейке список значений (например: Агент;Телевизор; Прочее).

При выборе "Прочее" в соседнем поле разрешалось бы вводить тескт, в противном случаии соседняя ячейка была бы не активна.
Flangini вне форума Ответить с цитированием
Старый 26.05.2009, 09:57   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Что значит "соседнее поле" и "соседняя ячейка"?
При создании выпадающего списка, значение вводится в эту ячейку со списком. А Вам что нужно?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 26.05.2009, 10:04   #3
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Переформулирую:
Ячейка (1;1) - должна иметь список значений (Агент; Телевизор; Прочее)
Ячейка (2;1) - не активна, ввод текста не возможен (желательно чтобы даже выделить ячейку нельзя было, защита от Ctrl+V), но если в ячейке (1;1) - выбрать "Прочее", то яцейка (2;1) - становится активной и туда можно вводить текст.

Последний раз редактировалось Flangini; 26.05.2009 в 10:07. Причина: Для внесения ясности в пост :)
Flangini вне форума Ответить с цитированием
Старый 26.05.2009, 10:37   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В модуль нужного листа вставьте код:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [A1].Address And [A1] <> "Прочее" Then [A2] = [A1]
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = [A2].Address And [A1] <> "Прочее" Then [A1].Select
End Sub
Если в ячейке "A1" находится значение "Прочее", то можно будет выделять ячейку "A2" и изменять ее значение. В противном случае, при попытке выделить ячейку "A2", будет активной ячейка "A1". При выборе в "A1" другого значения, это же значение будет в ячейке "A2".
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 26.05.2009, 11:45   #5
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

а если нужно отслеживать по столбцам?

столбцы F и G
в столбце F выбираем из Агент; Телевизор; Прочее
а в столбце G при выборе в столбце F "Прочее" пишем, что имели ввиду под прочим
Flangini вне форума Ответить с цитированием
Старый 26.05.2009, 12:32   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Например, так:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 6 And Target <> "Прочее" Then Target.Offset(, 1) = Target
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 7 And Target.Offset(, -1) <> "Прочее" Then Target.Offset(, -1).Select
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 26.05.2009, 14:07   #7
Flangini
Форумчанин
 
Аватар для Flangini
 
Регистрация: 11.02.2008
Сообщений: 119
По умолчанию

Вот! то что нужно. Только вот при выделении нескольких ячеек вместе с ячейкой из столбца G фатал ерор всего модуля.
Flangini вне форума Ответить с цитированием
Старый 27.05.2009, 08:25   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Запретить выделение диапазона ячеек, если в него входит хотя бы одна ячейка столбца "G" - это просто. Сложнее запретить вставку диапазона. Я имею ввиду то, что если пользователь выделит ячейку и попытается вставить в нее ранее скопированный диапазон, который пересечется со столбцом "G". Причем, если пересечения не будет, то вставку нужно разрешить.
Посмотрите вложение, в котором это реализовано.
Вложения
Тип файла: rar Книга1.rar (10.5 Кб, 20 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ячейка Excel - в тексте Word ruavia3 Microsoft Office Word 6 08.04.2009 15:10
Создание в VBA "поле с выпадающем списком" tae1980 Microsoft Office Excel 2 30.03.2009 12:22
Ячейка как список (через VBA) maxic Microsoft Office Excel 5 23.01.2009 00:10
Ячейка не меньше 1000 mirawoo Microsoft Office Excel 2 24.10.2008 11:04
Помогите плз, нужна плавающая ячейка linitz Microsoft Office Excel 7 19.09.2008 13:34