Имя: Пароль:
1C
1С v8
Удалить диапазон ячеек в Excel через 1с
, ,
0 marshalbratsk
 
07.12.16
10:21
Как удалить диапазон строк Excel?

Пытаюсь так - не работает

Для i=0 по КоличествоСтрок-1 Цикл
        a=ТЗ[i].Индекс1+2; //Получаю индекс начала диапазона (лежит в таблице значений)
        b=ТЗ[i+1].Индекс1-1; //получаю индекс конца диапазона (лежит в таблице значений)
        sheet.Rows("A"+a+":"+"A"+b).Delete();
КонецЦикла;

("A"+a+":"+"A"+b) в отладчике показывает как (A15:A15000) т.е. правильно
1 marshalbratsk
 
07.12.16
10:22
Ошибка при вызове метода контекста (Rows)
sheet.Rows("A"+a+":"+"A"+b).Delete();
2 marshalbratsk
 
07.12.16
10:25
с range вместо rows тоже не работает
3 Vladal
 
07.12.16
10:51
Попробуй так: начни запись макроса, удали нужные ячейки, останови запись макроса. Потом по Alt-F11 перейди в модуль с макросом и посмотри синтаксис команд.
4 Vladal
 
07.12.16
10:52
И удалить именно строки, а не значения этих строк?

Раньше получалось так:
sheet.Rows("300:10000").Delete

А может, Delete без скобок надо? Попробуй свой пример без скобок.
5 Vladal
 
07.12.16
10:57
Мне макрос выдал такое:

rows("НачальнаяСтрока:КонечнаяСтрока").select
selection.delete shift:=xlUp
6 Vladal
 
07.12.16
10:58
о. тему на Мисте нашел: Как удалить диапазон строк в excel?
7 marshalbratsk
 
07.12.16
11:11
Range("A17102:A17201").Select
    Selection.EntireRow.Delete
Вот, что выдал VBA

Без скобок нельзя
{Обработка.bzfВыгрузкаМеждународнойОтчетности.Форма.Форма.Форма(3349,25)}: Неопознанный оператор
        sheet.range(ab).Select<<?>>; (Проверка: Толстый клиент (обычное приложение))
{Обработка.bzfВыгрузкаМеждународнойОтчетности.Форма.Форма.Форма(3350,35)}: Неопознанный оператор
        sheet.selection.EntireRow.delete<<?>>; (Проверка: Толстый клиент (обычное приложение))


Если вбивать значения напрямую, без переменных, то работает, но мне надо через переменные

        a=ТЗ[КоличествоСтрок-2-c].Индекс1+2;
        b=ТЗ[КоличествоСтрок-c-1].Индекс1-1;
        ab=Строка("A"+a+":"+"A"+b);
        Sheet.Range(ab).Select();
        Sheet.Selection.EntireRow.Delete();

Так пытаюсь - не работает
Произошла исключительная ситуация (0x800a03ec)
8 marshalbratsk
 
07.12.16
11:16
http://hkar.ru/MvDO
Строку определяет
9 marshalbratsk
 
07.12.16
11:21
ФЫШВОФДЫВРОФЫРВЛОЫФВОЫРФВЛЫв
ФОРМАТ, МАТЬ ЕГО, ЧИСЛА
писал с пробелами
http://hkar.ru/MvEC

Сначала не обратил внимания, потом, когда (8) отправил - увидел
10 marshalbratsk
 
07.12.16
11:23
Всем спасибо, всего хорошего
11 Vladal
 
07.12.16
11:28
Да. Точно. Формат числа без разделителей надо использовать.
В семерке это было естественным, а восьмерка преобразует число в строку с разделителем, если не указать иначе.
12 marshalbratsk
 
07.12.16
11:30
А ещё через Selection не хочет удалять, ругается, писал напрямую
Sheet.Range(ab).Delete();
13 marshalbratsk
 
07.12.16
11:53
(12) И так он тоже не удалял

Короче, чтобы удалить диапазон строк нужно писать следующее
Sheet.Range("Диапазон строк").EntireRow.Delete();