Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Запрет на ввод данных не из списка (через макрос) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Запрет на ввод данных не из списка (через макрос)
Evgen83 Дата: Вторник, 24.07.2012, 21:08 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Всем, Доброго времени суток!

Помогите, пожалуйста решить задачу: нужно средствами VBA запретить ввод в поле с выпадающим списком значений не из списка. Заранее спасибо!
Прикрепил файл, но на всякий случай код:

[vba]
Code
Private Sub ComboBox1_Change()
Application.EnableEvents = False
ActiveCell.Value = Me.ComboBox1.Value
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [e1:e1000]) Is Nothing Or Target.Cells.Count > 1 Then HideCombo: Exit Sub
Application.EnableEvents = False
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1.Width = Target.Width + 16
Me.ComboBox1.Height = Target.Height
FillCombo
Application.EnableEvents = True
End Sub

Sub FillCombo()
Const iRow = 65536: iClm = "A"
iRws = Sheets(1).Columns(iClm).Rows(iRow).End(xlUp).Row
ComboBox1.ListFillRange = "A1:A" & iRws
Me.ComboBox1.Value = ActiveCell.Value
Me.ComboBox1.Font.Size = 6
End Sub

Sub HideCombo()
Me.ComboBox1.Top = 0
Me.ComboBox1.Left = 0
Me.ComboBox1.Width = 0
Me.ComboBox1.Height = 0
End Sub
[/vba]
К сообщению приложен файл: 8530314.xlsm (34.5 Kb)
 
Ответить
СообщениеВсем, Доброго времени суток!

Помогите, пожалуйста решить задачу: нужно средствами VBA запретить ввод в поле с выпадающим списком значений не из списка. Заранее спасибо!
Прикрепил файл, но на всякий случай код:

[vba]
Code
Private Sub ComboBox1_Change()
Application.EnableEvents = False
ActiveCell.Value = Me.ComboBox1.Value
Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, [e1:e1000]) Is Nothing Or Target.Cells.Count > 1 Then HideCombo: Exit Sub
Application.EnableEvents = False
Me.ComboBox1.Top = Target.Top
Me.ComboBox1.Left = Target.Left
Me.ComboBox1.Width = Target.Width + 16
Me.ComboBox1.Height = Target.Height
FillCombo
Application.EnableEvents = True
End Sub

Sub FillCombo()
Const iRow = 65536: iClm = "A"
iRws = Sheets(1).Columns(iClm).Rows(iRow).End(xlUp).Row
ComboBox1.ListFillRange = "A1:A" & iRws
Me.ComboBox1.Value = ActiveCell.Value
Me.ComboBox1.Font.Size = 6
End Sub

Sub HideCombo()
Me.ComboBox1.Top = 0
Me.ComboBox1.Left = 0
Me.ComboBox1.Width = 0
Me.ComboBox1.Height = 0
End Sub
[/vba]

Автор - Evgen83
Дата добавления - 24.07.2012 в 21:08
RAN Дата: Вторник, 24.07.2012, 21:18 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
VBA - это обязательное условие? Может достаточно в свойствах комбо указать Style = 2?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеVBA - это обязательное условие? Может достаточно в свойствах комбо указать Style = 2?

Автор - RAN
Дата добавления - 24.07.2012 в 21:18
Evgen83 Дата: Вторник, 24.07.2012, 21:42 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Если я правильно понимаю, что бы присвоить это свойство всему диапазону выпадающих списков (в моём случае [e1:e1000]) нужен именно макрос...может я ошибаюсь?
 
Ответить
СообщениеЕсли я правильно понимаю, что бы присвоить это свойство всему диапазону выпадающих списков (в моём случае [e1:e1000]) нужен именно макрос...может я ошибаюсь?

Автор - Evgen83
Дата добавления - 24.07.2012 в 21:42
RAN Дата: Вторник, 24.07.2012, 21:46 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
На досуге посчитайте, сколько у вас в файле комбобоксов. smile


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНа досуге посчитайте, сколько у вас в файле комбобоксов. smile

Автор - RAN
Дата добавления - 24.07.2012 в 21:46
Evgen83 Дата: Среда, 25.07.2012, 21:06 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Указал в свойствах Style = 2, стала вылетать ошибка "Run-time error `380`: Could not set the Value property. Invalid property value". Что-то про свойства ячейки? и стала выделенным жёлтым фоном 23 строка "Me.ComboBox1.Value = ActiveCell.Value"
 
Ответить
СообщениеУказал в свойствах Style = 2, стала вылетать ошибка "Run-time error `380`: Could not set the Value property. Invalid property value". Что-то про свойства ячейки? и стала выделенным жёлтым фоном 23 строка "Me.ComboBox1.Value = ActiveCell.Value"

Автор - Evgen83
Дата добавления - 25.07.2012 в 21:06
RAN Дата: Среда, 25.07.2012, 21:13 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Могу погадать.
У вас в ActiveCell значение, которого нет в списке.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМогу погадать.
У вас в ActiveCell значение, которого нет в списке.

Автор - RAN
Дата добавления - 25.07.2012 в 21:13
vikttur Дата: Среда, 25.07.2012, 21:13 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Значение в ячейке не совпадает ни с одним из выпадающего списка.
 
Ответить
СообщениеЗначение в ячейке не совпадает ни с одним из выпадающего списка.

Автор - vikttur
Дата добавления - 25.07.2012 в 21:13
Evgen83 Дата: Среда, 25.07.2012, 21:21 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

Убрал 23 строку - всё зарботало! Но как то странно: если "встать" на данную ячейку, таким образом, чтобы список не выпадал (звучит немного коряво)): свойство не работает, можно вставить, что угодно. Если же список выпал, то вставить можно только то, что есть в списке. Такая особенность.
К сообщению приложен файл: 9113576.xlsm (35.1 Kb)


Сообщение отредактировал Evgen83 - Среда, 25.07.2012, 21:23
 
Ответить
СообщениеУбрал 23 строку - всё зарботало! Но как то странно: если "встать" на данную ячейку, таким образом, чтобы список не выпадал (звучит немного коряво)): свойство не работает, можно вставить, что угодно. Если же список выпал, то вставить можно только то, что есть в списке. Такая особенность.

Автор - Evgen83
Дата добавления - 25.07.2012 в 21:21
RAN Дата: Среда, 25.07.2012, 21:26 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А в чем странность? Или в комбо встаем, или мимо. Списка в ячейке никогда и не было. И водить туда можно все, что угодно.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА в чем странность? Или в комбо встаем, или мимо. Списка в ячейке никогда и не было. И водить туда можно все, что угодно.

Автор - RAN
Дата добавления - 25.07.2012 в 21:26
Evgen83 Дата: Среда, 25.07.2012, 21:32 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 0% ±

RAN, а это можно как то подправить? Т.е. чтобы в диапазон [e1:e1000] нельзя было встать "мимо", а только в combobox1?


Сообщение отредактировал Evgen83 - Среда, 25.07.2012, 21:32
 
Ответить
СообщениеRAN, а это можно как то подправить? Т.е. чтобы в диапазон [e1:e1000] нельзя было встать "мимо", а только в combobox1?

Автор - Evgen83
Дата добавления - 25.07.2012 в 21:32
RAN Дата: Среда, 25.07.2012, 21:41 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Можно сделать комбо размером с лист. Тогда точно не промажешь! biggrin
Вообще вижу 2 варианта не попасть в комбо.
1. Отключить макросы
2. Выделить несколько ячеек и редактировать значение в командной строке.

А можно так попробовать
К сообщению приложен файл: 1072532.xls (40.5 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Среда, 25.07.2012, 22:01
 
Ответить
СообщениеМожно сделать комбо размером с лист. Тогда точно не промажешь! biggrin
Вообще вижу 2 варианта не попасть в комбо.
1. Отключить макросы
2. Выделить несколько ячеек и редактировать значение в командной строке.

А можно так попробовать

Автор - RAN
Дата добавления - 25.07.2012 в 21:41
Гость Дата: Четверг, 26.07.2012, 15:13 | Сообщение № 12
Группа: Гости
RAN, То же рабочий вариант!
 
Ответить
СообщениеRAN, То же рабочий вариант!

Автор - Гость
Дата добавления - 26.07.2012 в 15:13
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!