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

Вход

Регистрация

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

 

= Мир MS Excel/Добавление/удаление строк по динамическому условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление/удаление строк по динамическому условию (Макросы/Sub)
Добавление/удаление строк по динамическому условию
Almost Дата: Четверг, 03.12.2015, 14:42 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!

Есть форма с данными по компании. Несколько таких форм идут на первом листе вниз одна за другой, и в самом конце есть кнопка на добавление новой формы. Форма копируется с другого листа и присоединяется в конец первого листа.

Необходима возможность удаления произвольно выбранной формы из всего набора форм на первом листе.

Пытаюсь реализовать, присвоив каждой форме уникальный номер. Тут два варианта:
1) Сначала номер формы указал формулой "=R(-1)C +1". Все формы замечательно добавляются и нумеруются. Но выяснилось, что полученная формулами нумерация не обнаруживается поиском. Т.е. отображаемый результат формулы "2" не обнаруживается поиском по значению "2". Во вложении пример.
2) Как вариант, номер формы посчитать самим макросом и вставить сразу значение. Оно естественно находится поиском, компания удаляется. Но возникает другая проблема. При удалении промежуточной формы сбивается вся нумерация, файл рушится.

Я вижу только одно решение - сделать цикл, который при удалении строки пробежит по всем номерам и сдвинет их на 1. Но оно мне не очень нравится, потому что компаний может быть несколько десятков, а макрос даже в существующем виде отрабатывает не очень быстро (в примере он обрезан только до нужной части).

Вопрос: есть ли альтернативные решения кроме цикла?
К сообщению приложен файл: 12533.xlsb (99.9 Kb)


Сообщение отредактировал Almost - Четверг, 03.12.2015, 21:24
 
Ответить
СообщениеЗдравствуйте!

Есть форма с данными по компании. Несколько таких форм идут на первом листе вниз одна за другой, и в самом конце есть кнопка на добавление новой формы. Форма копируется с другого листа и присоединяется в конец первого листа.

Необходима возможность удаления произвольно выбранной формы из всего набора форм на первом листе.

Пытаюсь реализовать, присвоив каждой форме уникальный номер. Тут два варианта:
1) Сначала номер формы указал формулой "=R(-1)C +1". Все формы замечательно добавляются и нумеруются. Но выяснилось, что полученная формулами нумерация не обнаруживается поиском. Т.е. отображаемый результат формулы "2" не обнаруживается поиском по значению "2". Во вложении пример.
2) Как вариант, номер формы посчитать самим макросом и вставить сразу значение. Оно естественно находится поиском, компания удаляется. Но возникает другая проблема. При удалении промежуточной формы сбивается вся нумерация, файл рушится.

Я вижу только одно решение - сделать цикл, который при удалении строки пробежит по всем номерам и сдвинет их на 1. Но оно мне не очень нравится, потому что компаний может быть несколько десятков, а макрос даже в существующем виде отрабатывает не очень быстро (в примере он обрезан только до нужной части).

Вопрос: есть ли альтернативные решения кроме цикла?

Автор - Almost
Дата добавления - 03.12.2015 в 14:42
devilkurs Дата: Пятница, 04.12.2015, 17:48 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
Посмотри
К сообщению приложен файл: 0315583.xlsb (99.1 Kb)


 
Ответить
СообщениеПосмотри

Автор - devilkurs
Дата добавления - 04.12.2015 в 17:48
Almost Дата: Пятница, 04.12.2015, 18:57 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
devilkurs, Спасибо, отлично работает! Буду разбираться в коде )
 
Ответить
Сообщениеdevilkurs, Спасибо, отлично работает! Буду разбираться в коде )

Автор - Almost
Дата добавления - 04.12.2015 в 18:57
Almost Дата: Пятница, 04.12.2015, 20:07 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Одна строка вообще для меня непонятна. Можете пояснить, что она делает? А то самый смысл, как проблему удалось решить, я не улавливаю :)

x = Mid(Range("A" & i).Formula, 10)


Сообщение отредактировал Almost - Пятница, 04.12.2015, 20:09
 
Ответить
СообщениеОдна строка вообще для меня непонятна. Можете пояснить, что она делает? А то самый смысл, как проблему удалось решить, я не улавливаю :)

x = Mid(Range("A" & i).Formula, 10)

Автор - Almost
Дата добавления - 04.12.2015 в 20:07
devilkurs Дата: Пятница, 04.12.2015, 20:16 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
что она делает?


Range("A" & i).Formula - выхватывает из ячейки формулу типа =ДСКР!$A$50
а Mid(....., 10) - обрезает, начиная с 10 символа. Т.е. остается цифра 50.
Так получил номер строки для дальнейшего обращения Row для удаления


 
Ответить
Сообщение
что она делает?


Range("A" & i).Formula - выхватывает из ячейки формулу типа =ДСКР!$A$50
а Mid(....., 10) - обрезает, начиная с 10 символа. Т.е. остается цифра 50.
Так получил номер строки для дальнейшего обращения Row для удаления

Автор - devilkurs
Дата добавления - 04.12.2015 в 20:16
Almost Дата: Пятница, 04.12.2015, 20:18 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Всё ясно, спасибо!
 
Ответить
СообщениеВсё ясно, спасибо!

Автор - Almost
Дата добавления - 04.12.2015 в 20:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавление/удаление строк по динамическому условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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