У меня странная проблема с двумя моими таблицами Excel, которые находятся на двух разных листах в моем проекте. Я использую VSTO, но VBA показывает тот же результат: количество строк в пустой таблице содержит 0 строк в одном случае и 1 строку (я предполагаю, что строка вставки) в другом случае.ListRows.Count возвращает несогласованные результаты
установки параметров
Два рабочих листов: Лист1, Лист2
Два соответствующих названные Excel Таблицы: Sheet1Table, Sheet2Table
Обе таблицы пусты, то есть у них есть одна пустая строка, которая является вставка строка, не может быть удалена.
Я бегу следующий код, чтобы определить количество строк данных (т.е. за исключением строки заголовка):
Microsoft.Office.Tools.Excel.ListObject sheet1Table = Globals.Sheet1.Sheet1Table;
int numberOfListRows1 = sheet1Table.ListRows.Count;
и
Microsoft.Office.Tools.Excel.ListObject sheet2Table = Globals.Sheet2.Sheet2Table;
int numberOfListRows2 = sheet2Table.ListRows.Count;
Результатом является то, что numberOfListRows1
равно 1 и numberOfListRows2
0 хотя результат (в зависимости от того, что правильно) должен быть одинаковым. Я сравнил свойства таблицы и рабочего листа, а также исходные файлы в Visual Studio, и я не заметил никаких различий. Любая идея, что я должен искать (и какой результат является правильным)?
Использовал .add и .delete для добавления строк, а с другой - использовать строки вставки, удалять строки, поскольку список только учитывает .add .delete, поэтому вы можете перекосить счетчик с ручным редактированием таблицы? –
Действительно, это похоже на то, что вызывает его. Если все строки удаляются вручную, счетчик равен «0».Итак, будет ли «1» правильным результатом, и мне нужно как-то сбросить таблицу до подсчета, если она пуста? – jerry
Оказывает, что удаление (вручную или программно) исправляет его. Проблема заключалась в том, как была создана таблица. Я выбрал строку заголовка и одну пустую строку, а затем щелкнул «Формат как таблица». Результат выглядит как пустой стол со строкой вставки. Даже «COUNTA» в этой строке равно 0. Но на самом деле это строка данных, которая учитывается при создании «ListRows.Count». Кажется очевидным и почти глупым сейчас. – jerry