Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
20.04.2024, 00:39:08

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Удаление/ Сохранение строк из VBA ListBox
Страниц: [1]   Вниз
Печать
Автор Тема: Удаление/ Сохранение строк из VBA ListBox  (Прочитано 9378 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Bee
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 75


Просмотр профиля E-mail
« : 19.07.2017, 19:46:59 »

Подскажите пожалуйста,  как строки, не отмеченные галочкой в списке ListBox, удалить с листа Sheet1.
Записан
parovoz
Пользователь
**

Репутация: +4/-0
Офлайн Офлайн

Сообщений: 90


Юрій


Просмотр профиля
« Ответ #1 : 19.07.2017, 20:12:56 »

Может так. Улыбка
Записан
Bee
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 75


Просмотр профиля E-mail
« Ответ #2 : 20.07.2017, 12:45:16 »

Большое спасибо за ответ, но это не совсем то, что нужно. Задача в том, чтобы после выбора определённых строк в ListBox, остальные (все), Не Отмеченные галочкой строки удалялись (можно было удалить) из списка на листе Sheet1.
Ищу решение.
Записан
parovoz
Пользователь
**

Репутация: +4/-0
Офлайн Офлайн

Сообщений: 90


Юрій


Просмотр профиля
« Ответ #3 : 20.07.2017, 17:19:54 »

Добрый день . Вы в описании  к теме написали :"как строки, не отмеченные галочкой в списке ListBox, удалить с листа Sheet1". Ну я и набросал код.
Записан
Bee
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 75


Просмотр профиля E-mail
« Ответ #4 : 20.07.2017, 19:43:24 »

Да, я запустил ваш код, по одной удаляются отмеченные строки Грустный
А нужно удалить все не отмеченные строки разом, после запуска кода. Решение пока не нашёл.
Записан
Юрий М
Глобальный модератор
Ветеран
*****

Репутация: +112/-0
Офлайн Офлайн

Сообщений: 2 077



Просмотр профиля E-mail
« Ответ #5 : 22.07.2017, 13:42:02 »

нужно удалить все не отмеченные строки разом
Собираем номера строк, подлежащих удалению, в массив, а потом одним махом удаляем группу этих строк.
 А поочерёдное удаление чем не устраивает? Ведь не тысячи же строк? )
Записан
Bee
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 75


Просмотр профиля E-mail
« Ответ #6 : 22.07.2017, 23:01:46 »

Пару сотен строк может быть.  Улыбка И эти строки (без галочки!) надо удалить одним махом с листа excel.
Я пробую решить задачу через сортировку и выделение строк на листе excel, но код получается достаточно обьёмный и много действий. Может найдётся более простое решение?
Записан
Юрий М
Глобальный модератор
Ветеран
*****

Репутация: +112/-0
Офлайн Офлайн

Сообщений: 2 077



Просмотр профиля E-mail
« Ответ #7 : 23.07.2017, 13:41:49 »

В "Хитростях" Дмитрий написал статью про удаление строк по условию. Вариант удаления сразу группы строк, о котором я говорил, можно посмотреть в способе №2.
Записан
Bee
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 75


Просмотр профиля E-mail
« Ответ #8 : 24.07.2017, 13:55:21 »

Выделение строк и удаление из них пустых строк получилось. Не получается из всего диапазона на листе удалить Не выделенные строки.


Код: (vb)

Private Sub ML_CommandButton_Click()

    Dim RowRange As Range
    Dim RowCnt As Integer
    Dim r As Integer
   
    RowCnt = 0
    For r = 0 To ListBox_Ln.ListCount - 1
        If ListBox_Ln.Selected(r) Then
            RowCnt = RowCnt + 1
            If RowCnt = 1 Then
                Set RowRange = ActiveSheet.UsedRange.Rows(r + 1)
               
            Else
                Set RowRange = Union(RowRange, ActiveSheet.UsedRange.Rows(r + 1))
            End If
        End If
    Next r
   
      If Not RowRange Is Nothing Then RowRange.Select
    Unload Me

      LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    Application.ScreenUpdating = False
    For ri = LastRow To 1 Step -1
        If Application.CountA(Rows(ri)) = 0 Then Rows(ri).Delete
       
    Next ri

End Sub

Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #9 : 24.07.2017, 15:12:03 »

Не выделенные строки
Код: (vb)
If ListBox_Ln.Selected(r) =False Then

?
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Юрий М
Глобальный модератор
Ветеран
*****

Репутация: +112/-0
Офлайн Офлайн

Сообщений: 2 077



Просмотр профиля E-mail
« Ответ #10 : 24.07.2017, 21:35:00 »

А зачем Вы собираете отмеченные строки, если нужно наоборот? И зачем ВЫДЕЛЯЕТЕ отобранные строки?
Записан
Bee
Пользователь
**

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 75


Просмотр профиля E-mail
« Ответ #11 : 25.07.2017, 01:34:46 »

The_Prist, спасибо большое! Разобрался) Теперь всё работает.

Код: (vb)

Private Sub ML_CommandButton_Click()

    Dim RowRange As Range
    Dim RowCnt As Integer
    Dim r As Integer
   
    RowCnt = 0
    For r = 0 To ListBox_Ln.ListCount - 1
   
        If ListBox_Ln.Selected(r) = False Then
            RowCnt = RowCnt + 1
            If RowCnt = 1 Then
                Set RowRange = ActiveSheet.UsedRange.Rows(r + 1)
            Else
                Set RowRange = Union(RowRange, ActiveSheet.UsedRange.Rows(r + 1))
               
            End If
        End If
      Next r
    RowRange.Delete
   
     Unload Me

End Sub

Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru