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

Вход

Регистрация

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

 

= Мир MS Excel/При формирование связанных списков возникает исключение - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
При формирование связанных списков возникает исключение
magataka Дата: Четверг, 21.05.2015, 18:50 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте уважаемые форумчане.
У меня вопрос по автоматическому формированию связанного списка.
Я создаю файл екселя 2003 с помощью автоматизации с использованием языка C# в среде Visual Studio 2010.
Первый список создается в ячейке B3 нормально. При создании второго списка возникает ошибка COMException и моя программа аварийно завершается. При этом список не создается.
Во втором списке использую формулу "=ДВССЫЛ(B3)", где B3 - адрес ячейки первого списка.
Я выяснил, что при программном создании первого списка ячейка B3 остается ПУСТОЙ и это приводит к ошибке при создании второго связанного списка.
Если после создания первого списка в нем выбрать любое допустимое значение, то ошибки при создании второго списка не будет.
Подскажите пожалуйста как можно решить данную проблему.
Привожу код функции формирования обоих списков на языке C#
public void CreateDropDownList(string cell, string range)
{
_range = _workSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, _workSheet, new object[] {cell});
var val = _range.GetType().InvokeMember("Validation", BindingFlags.GetProperty, null, _range, null);

val.GetType().InvokeMember("Delete", BindingFlags.InvokeMethod, null, val, null);
var args = new object[] { XlValidateList, XlValidAlertWarning, XlBetween, range, null };
val.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, val, args);

val.GetType().InvokeMember("IgnoreBlank", BindingFlags.SetProperty, null, val, new object[] {true});
val.GetType().InvokeMember("InCellDropdown", BindingFlags.SetProperty, null, val, new object[] {true});
}

Вот код вызова функции:
первый список
form = string.Format("={0}", "Менеджеры");
_excel.CreateDropDownList("$B$3", form);
второй список
form = "=ДВССЫЛ(B3)";
_excel.CreateDropDownList("$B$6", form);

Во вложении файл со сформированными списками на листе Клиенты (как должно получиться).

Заранее благодарен
К сообщению приложен файл: 4049522.xls (51.0 Kb)
 
Ответить
СообщениеЗдравствуйте уважаемые форумчане.
У меня вопрос по автоматическому формированию связанного списка.
Я создаю файл екселя 2003 с помощью автоматизации с использованием языка C# в среде Visual Studio 2010.
Первый список создается в ячейке B3 нормально. При создании второго списка возникает ошибка COMException и моя программа аварийно завершается. При этом список не создается.
Во втором списке использую формулу "=ДВССЫЛ(B3)", где B3 - адрес ячейки первого списка.
Я выяснил, что при программном создании первого списка ячейка B3 остается ПУСТОЙ и это приводит к ошибке при создании второго связанного списка.
Если после создания первого списка в нем выбрать любое допустимое значение, то ошибки при создании второго списка не будет.
Подскажите пожалуйста как можно решить данную проблему.
Привожу код функции формирования обоих списков на языке C#
public void CreateDropDownList(string cell, string range)
{
_range = _workSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, _workSheet, new object[] {cell});
var val = _range.GetType().InvokeMember("Validation", BindingFlags.GetProperty, null, _range, null);

val.GetType().InvokeMember("Delete", BindingFlags.InvokeMethod, null, val, null);
var args = new object[] { XlValidateList, XlValidAlertWarning, XlBetween, range, null };
val.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, val, args);

val.GetType().InvokeMember("IgnoreBlank", BindingFlags.SetProperty, null, val, new object[] {true});
val.GetType().InvokeMember("InCellDropdown", BindingFlags.SetProperty, null, val, new object[] {true});
}

Вот код вызова функции:
первый список
form = string.Format("={0}", "Менеджеры");
_excel.CreateDropDownList("$B$3", form);
второй список
form = "=ДВССЫЛ(B3)";
_excel.CreateDropDownList("$B$6", form);

Во вложении файл со сформированными списками на листе Клиенты (как должно получиться).

Заранее благодарен

Автор - magataka
Дата добавления - 21.05.2015 в 18:50
_Boroda_ Дата: Четверг, 21.05.2015, 21:36 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6613 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Вот откуда все время берете этот способ составления связанных вып. списков? С Планеты что ли? Помню, как-то наткнулся там случайно на какую-то статью про это.
Держите другим способом. Там можно без СМЕЩ, ИНДЕКСами, но формула тогда будет посложнее.
И здесь еще посмотрите.
К сообщению приложен файл: 4049522_1.xls (59.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВот откуда все время берете этот способ составления связанных вып. списков? С Планеты что ли? Помню, как-то наткнулся там случайно на какую-то статью про это.
Держите другим способом. Там можно без СМЕЩ, ИНДЕКСами, но формула тогда будет посложнее.
И здесь еще посмотрите.

Автор - _Boroda_
Дата добавления - 21.05.2015 в 21:36
magataka Дата: Суббота, 23.05.2015, 18:54 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Вы не ответили на поставленный вопрос. Я спрашивал "Как устранить проблему возникновения ошибки при создании второго (связанного) списка, если в первом списке ничего еще не выбрано" .
 
Ответить
СообщениеВы не ответили на поставленный вопрос. Я спрашивал "Как устранить проблему возникновения ошибки при создании второго (связанного) списка, если в первом списке ничего еще не выбрано" .

Автор - magataka
Дата добавления - 23.05.2015 в 18:54
  • Страница 1 из 1
  • 1
Поиск:

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