Страницы: 1
RSS
макрос удаления лишних строк из таблицы по условию
 
Здравствуйте, сделал таблицу продаж. Есть макросы добавить/удалить строку, а также макрос удаления строк. Последняя строка в таблице скрыта для корректной работы макросов добавить/удалить. Нужна ваша помощь в следующем:
1. Нужно, чтобы макрос "Удалить строку" прекращал работу при условии, что последняя(скрытая) строка - 10
2. Макрос "Удалить" удалял все строки таблицы за исключением первых трех и одной последней (скрытой)

Если есть возможность сделать все то же самое без скрытых строк - подскажите пожалуйста, буду очень признателен!
Спасибо заранее за помощь!
Файл прилагается
 
У Вас есть возможность переделать в умную таблицу? Тогда могло бы выглядеть так:

Код
   Dim lo as ListObject
   Set lo=ThisWorkBook.ActiveSheet.ListObjects(1)

   Dim value() as Variant 'загоняете в массив таблицу, проводите манипуляции с данными
   value=lo.DataBodyRange.Value
   
   'здесь ваши действия с данными, удаление, добавление, важно помнить массив будет двумерный
   ' (первое измерение количество строк, второе количество столбцов)
   'т.е. создаёте новый массив, загоняете туда первые три элемента из текущего и последний, потом
   
   lo.DataBodyRange.Clear
   lo.ListRow.Add

   'а после циклом заполняете данными добавленные строки.
Изменено: Иван Манченко - 09.01.2022 13:13:35 (корректировка)
 
Иван Манченко, у меня и есть умная таблица
 
Так действуйте, направление мысли я Вам подсказал.
 
Иван Манченко, я в этом деле новичок, с массивами работать не умею. Макросы у меня работают прекрасно, нужно всего лишь подкорректировать макрос удаления строки, а конкретно: если последняя строка таблицы = 10, то exit sub. Я только учусь, до массивов мне еще далеко
 
Учитесь дальше
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=121301
Есть там ссылка на мануал, изучите
Изменено: Kuzmich - 09.01.2022 14:06:27
 
Цитата
Дмитрий написал:
если последняя строка таблицы = 10, то exit sub

Код
Dim i as Long
i=lo.ListRows.Count
Dim ii as Long
For ii=1 To i
 If lo.ListRows.Item(ii).Index=i Then
   Exit Sub
 Else
   lo.ListRows.Item(ii).Delete()
 End If
Next ii
Изменено: Иван Манченко - 09.01.2022 14:09:07 (корректировка)
 
Иван Манченко, извините, но я ничего не понял, что вы написали. Вы наверное мой файл даже не смотрели?  
 
Создаёте переменную для умной таблицы
Код
Dim lo As ListObject
Set lo=ThisWorkBook.ActiveSheet.ListObjects(1)

Удаляете все строки, кроме 10 ( и первой, второй, третьей)
Код
Dim i As Long
For i=1 To lo.ListRows.Count
  If i<>1 And i<>2 And i<>3 And i<>10 Then
     lo.ListRows.Item(i).Delete()
  End If
Next i


Удалены все строки, кроме тех, которые Вам нужны. По этому примеру разберётесь, что к чему - и встроите в файл. Удачи.
Изменено: Иван Манченко - 09.01.2022 14:34:49
 
Всем спасибо, разобрался с помощью мануала
Страницы: 1
Наверх