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

Вход

Регистрация

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

 

= Мир MS Excel/Проверка данных, Тип данных "Список". Не задаётся формула - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка данных, Тип данных "Список". Не задаётся формула (Макросы/Sub)
Проверка данных, Тип данных "Список". Не задаётся формула
FeLiX Дата: Четверг, 03.07.2014, 09:16 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.

Пытаюсь с помощью кода создать проверку данных типа список.
Уже воспользовался даже записью макроса и получил следующий код:
[vba]
Код
Sub Макрос13()   
     Range("D6").Select   
     With Selection.Validation   
         .Delete   
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _   
         xlBetween, Formula1:="=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))"   
         .IgnoreBlank = True   
         .InCellDropdown = True   
         .InputTitle = ""   
         .ErrorTitle = ""   
         .InputMessage = ""   
         .ErrorMessage = ""   
         .ShowInput = True   
         .ShowError = True   
     End With   
     Range("D12").Select   
End Sub  
[/vba]

Но даже при его выполнении на строке:
[vba]
Код

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _   
         xlBetween, Formula1:="=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))"  
[/vba]
Возникает сообщение об ошибке: 1004 Application-defined or object-defined error
Может кто сталкивался с подобной ситуацией?

Создал пример, чтобы было понятней, о чём речь.
Руками создать всё не сложно, но у меня эти таблицы формируются автоматически путём загрузки из БД.
К сообщению приложен файл: 1004.xlsm (22.0 Kb)
 
Ответить
СообщениеДобрый день.

Пытаюсь с помощью кода создать проверку данных типа список.
Уже воспользовался даже записью макроса и получил следующий код:
[vba]
Код
Sub Макрос13()   
     Range("D6").Select   
     With Selection.Validation   
         .Delete   
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _   
         xlBetween, Formula1:="=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))"   
         .IgnoreBlank = True   
         .InCellDropdown = True   
         .InputTitle = ""   
         .ErrorTitle = ""   
         .InputMessage = ""   
         .ErrorMessage = ""   
         .ShowInput = True   
         .ShowError = True   
     End With   
     Range("D12").Select   
End Sub  
[/vba]

Но даже при его выполнении на строке:
[vba]
Код

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _   
         xlBetween, Formula1:="=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))"  
[/vba]
Возникает сообщение об ошибке: 1004 Application-defined or object-defined error
Может кто сталкивался с подобной ситуацией?

Создал пример, чтобы было понятней, о чём речь.
Руками создать всё не сложно, но у меня эти таблицы формируются автоматически путём загрузки из БД.

Автор - FeLiX
Дата добавления - 03.07.2014 в 09:16
_Boroda_ Дата: Четверг, 03.07.2014, 09:23 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Что-то не совсем понял сакрального смысла формулы
Код
=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))
Объясните словами - что и где Вы хотите получить


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧто-то не совсем понял сакрального смысла формулы
Код
=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))
Объясните словами - что и где Вы хотите получить

Автор - _Boroda_
Дата добавления - 03.07.2014 в 09:23
Саня Дата: Четверг, 03.07.2014, 09:58 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
Что-то не совсем понял сакрального смысла формулы

ч/з таблицу соответствия получают название именованного диапазона, потом сам диапазон.

Formula1:="=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))"
Formula1:="=INDIRECT(VLOOKUP(B6,Лист2!$C$4:$D$7,2))"

нюансы локализации
 
Ответить
Сообщение
Что-то не совсем понял сакрального смысла формулы

ч/з таблицу соответствия получают название именованного диапазона, потом сам диапазон.

Formula1:="=ДВССЫЛ(ВПР(B6;'Лист2'!$C$3:$D$7;3))"
Formula1:="=INDIRECT(VLOOKUP(B6,Лист2!$C$4:$D$7,2))"

нюансы локализации

Автор - Саня
Дата добавления - 03.07.2014 в 09:58
_Boroda_ Дата: Четверг, 03.07.2014, 10:27 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Блин, точно. Не проснулся еще, похоже.
Тогда так еще можно:
Добавляем еще имя ййй=ДВССЫЛ(ВПР(Лист1!$B4;Лист2!$C$4:$D$7;2)) и пишем Formula1:="=ййй"


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеБлин, точно. Не проснулся еще, похоже.
Тогда так еще можно:
Добавляем еще имя ййй=ДВССЫЛ(ВПР(Лист1!$B4;Лист2!$C$4:$D$7;2)) и пишем Formula1:="=ййй"

Автор - _Boroda_
Дата добавления - 03.07.2014 в 10:27
FeLiX Дата: Четверг, 03.07.2014, 13:46 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем Спасибо.
Ошибка была в формуле нужно было писать в формуле не ";", а ","
Видимо есть разница

В итоге получилось:
[vba]
Код

FormulaStr = "=INDIRECT(VLOOKUP($B6," + sProject.Name + "!$C$3:$H$" + Trim(str(sProject.ListObjects("tblProject").ListRows.Count + 2)) + ",6))"
'ActiveWorkbook.Names.Add Name:="ForListApp", RefersToR1C1:="=INDIRECT(VLOOKUP(Рабочии_элементы!R[0]C2,Справочник_Проектов!R3C3:R6C8,6))"
'FormulaStr = "=ForListApp"
    With sWorkItem.Range("tblWorkItem[Приложение]").Validation
         .Delete
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=FormulaStr  
         .IgnoreBlank = True
         .InCellDropdown = True
         .InputTitle = ""
         .ShowInput = True
         .ShowError = True
     End With
[/vba]
 
Ответить
СообщениеВсем Спасибо.
Ошибка была в формуле нужно было писать в формуле не ";", а ","
Видимо есть разница

В итоге получилось:
[vba]
Код

FormulaStr = "=INDIRECT(VLOOKUP($B6," + sProject.Name + "!$C$3:$H$" + Trim(str(sProject.ListObjects("tblProject").ListRows.Count + 2)) + ",6))"
'ActiveWorkbook.Names.Add Name:="ForListApp", RefersToR1C1:="=INDIRECT(VLOOKUP(Рабочии_элементы!R[0]C2,Справочник_Проектов!R3C3:R6C8,6))"
'FormulaStr = "=ForListApp"
    With sWorkItem.Range("tblWorkItem[Приложение]").Validation
         .Delete
         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=FormulaStr  
         .IgnoreBlank = True
         .InCellDropdown = True
         .InputTitle = ""
         .ShowInput = True
         .ShowError = True
     End With
[/vba]

Автор - FeLiX
Дата добавления - 03.07.2014 в 13:46
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка данных, Тип данных "Список". Не задаётся формула (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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