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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос скрывает строки с нулями - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Макрос скрывает строки с нулями (Есть рабочий макрос, требуется его немного довести до ума)
Макрос скрывает строки с нулями
Гость Дата: Среда, 08.02.2012, 18:00 | Сообщение № 1
Группа: Гости
Здравствуйте! Я нашел макрос который на 99% работает как мне нужно, но есть одна проблемка. Этот макрос скрывает строки (в примере ниже действует начиная со 2-ой строки) если в них в 6-ом столбце в ячейке записано "0". Работает нормально, но если в этот момент например в стобцах 1-5 попадется пустая ячейка, то макрос не работает=( Как сделать, чтобы макрос обращал внимание ТОЛЬКО на 6-ой столбик, и скрывал строки на основании данных только из 6-го столбца! Номер столбца 6 - взят для примера.

[vba]
Code
Private Sub tgbZero_Click()
Application.ScreenUpdating = False ' отключаем обновление экрана во время выполнения макроса
i = 2 'номер строки, с которой начнется обработка
While Not IsEmpty(Cells(i, 2)) ' проверяем каждую строчку пока не встретимся с пустым значением т.е. концом списка
If tgbZero Then ' при нажатом положении кнопка tgbZero принимает значениее True
Sheets("4646").tgbZero.Caption = "Отобразить все строки" 'меняем надпись на кнопке, чтобы было понятно, что произойдет в следующий раз
If Cells(i, 6).Value = 0 Then ' прячем или показываем строки с нулевым значением
Rows(i).Hidden = True ' зависимости от значения в ячейке столбца "Кол"
Else ' и в зависимости от положения кнопки
Rows(i).Hidden = False
End If
Else
Sheets("4646").tgbZero.Caption = "Скрыть нулевые строки"
Rows(i).Hidden = False ' режим отображения всех строк в том числе и с нулем
End If
i = i + 1

Wend
Application.ScreenUpdating = False ' включаем обновление экрана во время выполнения макроса
End Sub
[/vba]
 
Ответить
СообщениеЗдравствуйте! Я нашел макрос который на 99% работает как мне нужно, но есть одна проблемка. Этот макрос скрывает строки (в примере ниже действует начиная со 2-ой строки) если в них в 6-ом столбце в ячейке записано "0". Работает нормально, но если в этот момент например в стобцах 1-5 попадется пустая ячейка, то макрос не работает=( Как сделать, чтобы макрос обращал внимание ТОЛЬКО на 6-ой столбик, и скрывал строки на основании данных только из 6-го столбца! Номер столбца 6 - взят для примера.

[vba]
Code
Private Sub tgbZero_Click()
Application.ScreenUpdating = False ' отключаем обновление экрана во время выполнения макроса
i = 2 'номер строки, с которой начнется обработка
While Not IsEmpty(Cells(i, 2)) ' проверяем каждую строчку пока не встретимся с пустым значением т.е. концом списка
If tgbZero Then ' при нажатом положении кнопка tgbZero принимает значениее True
Sheets("4646").tgbZero.Caption = "Отобразить все строки" 'меняем надпись на кнопке, чтобы было понятно, что произойдет в следующий раз
If Cells(i, 6).Value = 0 Then ' прячем или показываем строки с нулевым значением
Rows(i).Hidden = True ' зависимости от значения в ячейке столбца "Кол"
Else ' и в зависимости от положения кнопки
Rows(i).Hidden = False
End If
Else
Sheets("4646").tgbZero.Caption = "Скрыть нулевые строки"
Rows(i).Hidden = False ' режим отображения всех строк в том числе и с нулем
End If
i = i + 1

Wend
Application.ScreenUpdating = False ' включаем обновление экрана во время выполнения макроса
End Sub
[/vba]

Автор - Гость
Дата добавления - 08.02.2012 в 18:00
RAN Дата: Среда, 08.02.2012, 19:26 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вы проверку запускаете по двум столбцам (B и F), а хотите, чтобы макрос смотрел на один.
Так не бывает. smile


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВы проверку запускаете по двум столбцам (B и F), а хотите, чтобы макрос смотрел на один.
Так не бывает. smile

Автор - RAN
Дата добавления - 08.02.2012 в 19:26
IgorGo Дата: Среда, 08.02.2012, 20:13 | Сообщение № 3
Группа: Друзья
Ранг: Форумчанин
Сообщений: 108
Репутация: 38 ±
Замечаний: 0% ±

Quote (Гость)
While Not IsEmpty(Cells(i, 2))

макрос прекратит обработку как только найдет первую пустую ячейку в колонке В.
 
Ответить
Сообщение
Quote (Гость)
While Not IsEmpty(Cells(i, 2))

макрос прекратит обработку как только найдет первую пустую ячейку в колонке В.

Автор - IgorGo
Дата добавления - 08.02.2012 в 20:13
nerv Дата: Среда, 08.02.2012, 22:27 | Сообщение № 4
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

из макроса автора smile
[vba]
Code
Application.ScreenUpdating = False ' отключаем обновление экрана во время выполнения макроса
Application.ScreenUpdating = False ' включаем обновление экрана во время выполнения макроса
[/vba]


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщениеиз макроса автора smile
[vba]
Code
Application.ScreenUpdating = False ' отключаем обновление экрана во время выполнения макроса
Application.ScreenUpdating = False ' включаем обновление экрана во время выполнения макроса
[/vba]

Автор - nerv
Дата добавления - 08.02.2012 в 22:27
Гость Дата: Среда, 08.02.2012, 22:37 | Сообщение № 5
Группа: Гости
Quote (RAN)
Вы проверку запускаете по двум столбцам (B и F), а хотите, чтобы макрос смотрел на один.
Так не бывает.

Спасибо исправил! Ввел переменную "b" - теперь она означает за выбор столбца. У меня 1500 строк и макрос на поиски и скрытие строк тратит 60 сек!! Т.е. 0.04 сек на строку. Это нормально? Как сделать чтоб не тормозило? Для такой простейшей операции мой комп более чем мощный
 
Ответить
Сообщение
Quote (RAN)
Вы проверку запускаете по двум столбцам (B и F), а хотите, чтобы макрос смотрел на один.
Так не бывает.

Спасибо исправил! Ввел переменную "b" - теперь она означает за выбор столбца. У меня 1500 строк и макрос на поиски и скрытие строк тратит 60 сек!! Т.е. 0.04 сек на строку. Это нормально? Как сделать чтоб не тормозило? Для такой простейшей операции мой комп более чем мощный

Автор - Гость
Дата добавления - 08.02.2012 в 22:37
Alex_ST Дата: Четверг, 09.02.2012, 10:07 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
60 секунд на 1500 строк - это очень долго!
Но без вашего примера разбираться вряд ли кто-то станет подробно.
Quote (Гость)
Sheets("4646").tgbZero
Вы нам предлагаете самим составить за вас таблицу, на листе 4646 сделать ToggleButton и разбираться?
Выложите пример (никто же не просит всю книгу со всеми данными... достаточно только фрагмент с влияющими и зависимыми данными, а вдруг у вас там не макрос, а формулы тормозят?). Народ посмотрит.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Четверг, 09.02.2012, 10:08
 
Ответить
Сообщение60 секунд на 1500 строк - это очень долго!
Но без вашего примера разбираться вряд ли кто-то станет подробно.
Quote (Гость)
Sheets("4646").tgbZero
Вы нам предлагаете самим составить за вас таблицу, на листе 4646 сделать ToggleButton и разбираться?
Выложите пример (никто же не просит всю книгу со всеми данными... достаточно только фрагмент с влияющими и зависимыми данными, а вдруг у вас там не макрос, а формулы тормозят?). Народ посмотрит.

Автор - Alex_ST
Дата добавления - 09.02.2012 в 10:07
Формуляр Дата: Четверг, 09.02.2012, 10:24 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
Quote (Гость)
Как сделать чтоб не тормозило?

На первый взгляд, нужно вынести операции с кнопкой за пределы цикла.

Но Alex_ST прав - без примера сказать наверняка, в чём затык, невозможно.


Excel 2003 EN, 2013 EN
 
Ответить
Сообщение
Quote (Гость)
Как сделать чтоб не тормозило?

На первый взгляд, нужно вынести операции с кнопкой за пределы цикла.

Но Alex_ST прав - без примера сказать наверняка, в чём затык, невозможно.

Автор - Формуляр
Дата добавления - 09.02.2012 в 10:24
Alex_ST Дата: Четверг, 09.02.2012, 12:24 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Гость,
попробуйте так:[vba]
Code
Private Sub tgbZero_Click()
    Application.ScreenUpdating = False   ' отключить обновление экрана
    With Sheets("4646").tgbZero
       If .Value Then   ' если кнопка нажата
          Cells.EntireRow.AutoFit   ' показать все строки
          .Caption = "Скрыть нулевые строки"   ' сменить надпись на кнопке
       Else   ' если кнопка не нажата
          For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row   ' цикл со строки 2 до последней, в которой заполнена ячейка в столбце B (=2)
             Rows(i).Hidden = Cells(i, 6).Value = 0   ' если в столбце F (=6) в ячейке 0, то скрыть строку
          Next i
          .Caption = "Отобразить все строки"   ' сменить надпись на кнопке
       End If
    End With
    Application.ScreenUpdating = True   ' включить обновление экрана
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеГость,
попробуйте так:[vba]
Code
Private Sub tgbZero_Click()
    Application.ScreenUpdating = False   ' отключить обновление экрана
    With Sheets("4646").tgbZero
       If .Value Then   ' если кнопка нажата
          Cells.EntireRow.AutoFit   ' показать все строки
          .Caption = "Скрыть нулевые строки"   ' сменить надпись на кнопке
       Else   ' если кнопка не нажата
          For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row   ' цикл со строки 2 до последней, в которой заполнена ячейка в столбце B (=2)
             Rows(i).Hidden = Cells(i, 6).Value = 0   ' если в столбце F (=6) в ячейке 0, то скрыть строку
          Next i
          .Caption = "Отобразить все строки"   ' сменить надпись на кнопке
       End If
    End With
    Application.ScreenUpdating = True   ' включить обновление экрана
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 09.02.2012 в 12:24
Муля2010 Дата: Пятница, 10.02.2012, 14:43 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Alex_ST,
Я вот пропробовал - не работает
К сообщению приложен файл: 7041669.xls (23.0 Kb)


С ув. Муля!
 
Ответить
СообщениеAlex_ST,
Я вот пропробовал - не работает

Автор - Муля2010
Дата добавления - 10.02.2012 в 14:43
RAN Дата: Пятница, 10.02.2012, 14:57 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
И почему у всех работает, а у Мули - нет?
Да наверное потому, что Муля вместо того, чтобы макрос запустить, на кнопочку жмет!

Можно и на эту с таким-же успехом давить


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИ почему у всех работает, а у Мули - нет?
Да наверное потому, что Муля вместо того, чтобы макрос запустить, на кнопочку жмет!

Можно и на эту с таким-же успехом давить

Автор - RAN
Дата добавления - 10.02.2012 в 14:57
Alex_ST Дата: Пятница, 10.02.2012, 15:08 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Quote (Муля2010)
Я вот пропробовал - не работает

Муля2010,
Вообще-то из кода видно, что:
1. Должна быть не CommandButton, а ToggleButton
2. Обработка событий OLE-объектов ведётся в модуле листа, а вы зачем-то засунули код в стандартный модуль.

Вот: исправил тип элемента управления и перенёс код в модуль листа. Всё работает.
К сообщению приложен файл: _7041669.xls (23.5 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Quote (Муля2010)
Я вот пропробовал - не работает

Муля2010,
Вообще-то из кода видно, что:
1. Должна быть не CommandButton, а ToggleButton
2. Обработка событий OLE-объектов ведётся в модуле листа, а вы зачем-то засунули код в стандартный модуль.

Вот: исправил тип элемента управления и перенёс код в модуль листа. Всё работает.

Автор - Alex_ST
Дата добавления - 10.02.2012 в 15:08
Муля2010 Дата: Пятница, 10.02.2012, 15:10 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Quote (RAN)
Можно и на эту с таким-же успехом давить

И почему у всех работает, а у Мули - нет?
Да наверное потому, что Муля вместо того, чтобы макрос запустить, на кнопочку жмет!

Можно и на эту с таким-же успехом давить
RAN

Так я же вроди макрос на кнопку то и подцепил


С ув. Муля!
 
Ответить
Сообщение
Quote (RAN)
Можно и на эту с таким-же успехом давить

И почему у всех работает, а у Мули - нет?
Да наверное потому, что Муля вместо того, чтобы макрос запустить, на кнопочку жмет!

Можно и на эту с таким-же успехом давить
RAN

Так я же вроди макрос на кнопку то и подцепил

Автор - Муля2010
Дата добавления - 10.02.2012 в 15:10
RAN Дата: Пятница, 10.02.2012, 15:28 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вся беда, что только "вроди"...


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВся беда, что только "вроди"...

Автор - RAN
Дата добавления - 10.02.2012 в 15:28
Муля2010 Дата: Пятница, 10.02.2012, 15:42 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Quote (RAN)
Вся беда, что только "вроди"...
Вся беда, что только "вроди"...RAN

Ув. RAN!
Энный раз прошу! Давайте жить дружно, без всяких подколок.
Если я вас чем то невзначай обидел, то прошу вашего прощения!


С ув. Муля!
 
Ответить
Сообщение
Quote (RAN)
Вся беда, что только "вроди"...
Вся беда, что только "вроди"...RAN

Ув. RAN!
Энный раз прошу! Давайте жить дружно, без всяких подколок.
Если я вас чем то невзначай обидел, то прошу вашего прощения!

Автор - Муля2010
Дата добавления - 10.02.2012 в 15:42
Alex_ST Дата: Пятница, 10.02.2012, 16:11 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
а вот так ещё прикольнее: номера столбцов, ячейки которых нужно анализировать, задаются не напрямую цифрами в коде, а примечаниями к ячейкам.
Можно эти ячейки с примечаниями двигать мышкой и будут изменяться столбцы, в которых нужно искать пустые строки, и строки, начиная с которых искать.
К сообщению приложен файл: 8982216.xls (31.5 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Пятница, 10.02.2012, 22:30
 
Ответить
Сообщениеа вот так ещё прикольнее: номера столбцов, ячейки которых нужно анализировать, задаются не напрямую цифрами в коде, а примечаниями к ячейкам.
Можно эти ячейки с примечаниями двигать мышкой и будут изменяться столбцы, в которых нужно искать пустые строки, и строки, начиная с которых искать.

Автор - Alex_ST
Дата добавления - 10.02.2012 в 16:11
Муля2010 Дата: Пятница, 10.02.2012, 16:16 | Сообщение № 16
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Quote (Alex_ST)
ToggleButton

Прошу прощениЯ, но все таки хочу докопаться что у меня не так сделано.
Пробовал по всякому, в том числе и так, как у вас.
Ваш файл работает, а мой нет.
Посмотрите пжт, в чем причина.
К сообщению приложен файл: 8756434.xls (24.5 Kb)


С ув. Муля!
 
Ответить
Сообщение
Quote (Alex_ST)
ToggleButton

Прошу прощениЯ, но все таки хочу докопаться что у меня не так сделано.
Пробовал по всякому, в том числе и так, как у вас.
Ваш файл работает, а мой нет.
Посмотрите пжт, в чем причина.

Автор - Муля2010
Дата добавления - 10.02.2012 в 16:16
Муля2010 Дата: Пятница, 10.02.2012, 16:35 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Quote (Alex_ST)
а вот так ещё прикольнее: столбцы задаются не в коде, а примечаниями к ячейкам. Можно эти ячейки с примечаниями двигать мышкой и будут изменяться столбцы, где искать пустые строки и строки, начиная с которых искать.
а вот так ещё прикольнее: столбцы задаются не в коде, а примечаниями к ячейкам. Можно эти ячейки с примечаниями двигать мышкой и будут изменяться столбцы, где искать пустые строки и строки, начиная с которых искать.Alex_ST

Алексей!
Класная штука! Прям гениалтно. СПАСИБО вам!


С ув. Муля!
 
Ответить
Сообщение
Quote (Alex_ST)
а вот так ещё прикольнее: столбцы задаются не в коде, а примечаниями к ячейкам. Можно эти ячейки с примечаниями двигать мышкой и будут изменяться столбцы, где искать пустые строки и строки, начиная с которых искать.
а вот так ещё прикольнее: столбцы задаются не в коде, а примечаниями к ячейкам. Можно эти ячейки с примечаниями двигать мышкой и будут изменяться столбцы, где искать пустые строки и строки, начиная с которых искать.Alex_ST

Алексей!
Класная штука! Прям гениалтно. СПАСИБО вам!

Автор - Муля2010
Дата добавления - 10.02.2012 в 16:35
Муля2010 Дата: Пятница, 10.02.2012, 17:55 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Quote (Муля2010)
Прошу прощениЯ, но все таки хочу докопаться что у меня не так сделано.
Пробовал по всякому, в том числе и так, как у вас.
Ваш файл работает, а мой нет.
Посмотрите пжт, в чем причина.
Цитата, Alex_ST писал(а):
ToggleButton

Прошу прощениЯ, но все таки хочу докопаться что у меня не так сделано.
Пробовал по всякому, в том числе и так, как у вас.
Ваш файл работает, а мой нет.
Посмотрите пжт, в чем причина.Муля2010

Наконец то докумекал в чем причина.
Еще раз всем спасибо за помощь!


С ув. Муля!
 
Ответить
Сообщение
Quote (Муля2010)
Прошу прощениЯ, но все таки хочу докопаться что у меня не так сделано.
Пробовал по всякому, в том числе и так, как у вас.
Ваш файл работает, а мой нет.
Посмотрите пжт, в чем причина.
Цитата, Alex_ST писал(а):
ToggleButton

Прошу прощениЯ, но все таки хочу докопаться что у меня не так сделано.
Пробовал по всякому, в том числе и так, как у вас.
Ваш файл работает, а мой нет.
Посмотрите пжт, в чем причина.Муля2010

Наконец то докумекал в чем причина.
Еще раз всем спасибо за помощь!

Автор - Муля2010
Дата добавления - 10.02.2012 в 17:55
Alex_ST Дата: Пятница, 10.02.2012, 21:18 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Муля2010, а вы для кого по два раза в своём посте сами себя цитируете?
Мы тут, вроде, все не слишком тупые и всё давно поняли... biggrin



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеМуля2010, а вы для кого по два раза в своём посте сами себя цитируете?
Мы тут, вроде, все не слишком тупые и всё давно поняли... biggrin

Автор - Alex_ST
Дата добавления - 10.02.2012 в 21:18
Муля2010 Дата: Суббота, 11.02.2012, 13:31 | Сообщение № 20
Группа: Проверенные
Ранг: Обитатель
Сообщений: 290
Репутация: 12 ±
Замечаний: 0% ±

Quote (Alex_ST)
Муля2010, а вы для кого по два раза в своём посте сами себя цитируете?
Мы тут, вроде, все не слишком тупые и всё давно поняли

День добрый!
да нет! Я не мог так даже в мыслях подумать.
Как то спонтантно получилось это безобразие с моей стороны.


С ув. Муля!
 
Ответить
Сообщение
Quote (Alex_ST)
Муля2010, а вы для кого по два раза в своём посте сами себя цитируете?
Мы тут, вроде, все не слишком тупые и всё давно поняли

День добрый!
да нет! Я не мог так даже в мыслях подумать.
Как то спонтантно получилось это безобразие с моей стороны.

Автор - Муля2010
Дата добавления - 11.02.2012 в 13:31
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Макрос скрывает строки с нулями (Есть рабочий макрос, требуется его немного довести до ума)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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