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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 16:36   #1
samoa
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 14
По умолчанию выбрать в ячейке или значение из списка или вручную

Excel 2003
можно ли программно сделать так, чтобы в ячейке В1 в зависимости от значения ячейки А1 можно было выбрать либо значение из списка в ячейке, либо ввести вручную только численное значение (не относящееся к списку).
Причем если разрешено (по условию в ячейке А1) одно, то никак нельзя чтобы было другое. Т.е. если из списка, то никакого ручного ввода.
Примера нет, т.к. не знаю можно ли это сделать и как.

Попытка сделать так макрорекодером, а потом привязать к диапазону не увенчалась успехом. Выдает ошибку на строке
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="0;3;4;5"

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

Да, может это имеет значение: Все это еще на защищенном листе где ячейка В1 разрешена к редактированию пользователем (форматирование и изменение значений). Просто символы (любые) с клавиатуры без проверки вводятся.

Последний раз редактировалось samoa; 08.11.2010 в 17:15.
samoa вне форума Ответить с цитированием
Старый 08.11.2010, 16:55   #2
Daddy
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 10
По умолчанию

Моя прекрасная русский язык
Daddy вне форума Ответить с цитированием
Старый 08.11.2010, 17:01   #3
samoa
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 14
По умолчанию

старалась, чтобы было покороче в заголовке. Может, запятые и пропустила.
А что - совсем непонятно?
samoa вне форума Ответить с цитированием
Старый 08.11.2010, 17:05   #4
Daddy
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 10
По умолчанию

3 раза прочитал. Не понял
Daddy вне форума Ответить с цитированием
Старый 08.11.2010, 17:12   #5
samoa
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 14
По умолчанию

Ну, есть ячейка, которая редактируется пользвателем.
если в ячейке А1 записано "бал", то в ячейке В2 должен появиться список вариантов:0, 1, 2, 3 из которого можно будет выбрать.
Если в ячейке А1 записано что - то другое, например "рублей", "тонн" и т.д, то пользователь может только ввести число. Безо всяких списков.

Или то, или другое. Но по условию в ячейке А1.

Все.
samoa вне форума Ответить с цитированием
Старый 08.11.2010, 17:14   #6
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

Цитата:
Сообщение от samoa Посмотреть сообщение
Excel 2003
Выдает ошибку на строке
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="0;3;4;5"
исправьте:

Formula1:="0;3;4;5"

на

Код:
Formula1:="0,3,4,5"
EugeneS вне форума Ответить с цитированием
Старый 08.11.2010, 17:22   #7
samoa
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 14
По умолчанию

не помогло.
выдает ошибку 1004 ошибочное определение приложения или объекта.
может я неправильно в программе объект переназначила.
У меня было Selection.validate, а я сделала

#
Dim cl As Range
With ThisWorkbook.Worksheets(1)
For Each cl In .Range("B1:B9")
If cl.Offset(, -1).Value = "бал" Then
With cl.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator:=xlBetween, Formula1:="0,3,4,5"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Else
With cl.Validation
.Delete
.Add Type:=xlValidateWholeNumber, _
AlertStyle:=xlValidAlertInformation , _
Operator:=xlBetween, Minimum:="0", Maximum:="1000000"
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowError = True
End With
End If
Next
end with

Я в свой диапазон и условия вставила то, что записала макрорекодером для одного и другого варианта.
samoa вне форума Ответить с цитированием
Старый 08.11.2010, 17:32   #8
samoa
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 14
По умолчанию

Да...
И дело было в защите листа.
И UserInterfaceOnly:=True не помогло.
Буду сейчас думать как бы так быстренько защиту снять, а потом поставить назад.
samoa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что лучше выбрать или чем удобнее) PilGrim Общие вопросы C/C++ 6 12.08.2015 10:46
Выделение диапазона по наличию в ячейке (ячейках) текста или метки as-is Microsoft Office Excel 7 08.03.2010 18:09
vector, list или multimap. Помогите, пожалуйста, класс выбрать! Pahan Общие вопросы C/C++ 0 13.12.2009 12:54
Оптимизация DelphiX ? ...или что выбрать. KorDum Gamedev - cоздание игр: Unity, OpenGL, DirectX 13 30.06.2009 14:39
Delphi 2009 или иная...что выбрать? Неведомый Софт 4 25.11.2008 20:14