2014-04-17 2 views
0

Таким образом, я создал ListObject в Excel во время выполнения:Excel ListObject и управления - отсоединение управления

list = ws.Controls.AddListObject(somerange,"somename") 

Теперь у меня есть ListObject и управления на листе: ws.ListObjects.Count = 1 и WS .Controls.Count = 1. Как я «отделить» контроль от ListObject поэтому при использовании

ws.Controls.RemoveAt(0) 

удаляет только контроль, а не саму ListObject?

Сохранение файла и его повторное открытие делают это - он оставляет на странице только объект ListObject, элемент управления ушел. Но как это сделать во время выполнения?

+0

Попробуйте включить устройство записи макросов и добавить «ListObject». Это даст вам правильный синтаксис. –

+0

Извините, забыл упомянуть, что это в VB.NET, а не VBA, и мне сначала нужно управление, чтобы манипулировать «ListObject» - заполнять данными из «DataTable». Просто нужно избавиться от него позже, так как это делает какой-то странный материал (событие «SheetChange» срабатывает дважды), не удаляя сам «ListObject». – user3301313

+0

KimI думаю, что вы все равно можете делать ws.Listobjects.Add. Но я не могу проверить это сейчас. –

ответ

0

Хорошо, вот и все. В соответствии с приведенным выше кодом, в конце процедуры вы должны избавиться от переменной list. Я думал, что сборщик мусора сделает это, но, вероятно, я ошибся. list.Dispose() в конце второго тайма делает ход, и хотя Control все еще существует, больше не происходит странных вещей.