Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 27.06.2018, 14:08   #1
ignatenko_e
Пользователь
 
Регистрация: 17.04.2018
Сообщений: 14
Репутация: 10
По умолчанию два макроса (скрыть и удалить) колонки с 0

Здравствуйте!
макросы только начала изучать((( не могу понять почему макрос СКРЫТЬ 0 колонок срабатывает правильно:
Код:

Sub скрытьстолб()
Dim r As Range
  Application.ScreenUpdating = False
  For Each r In Range("B23:M23").Columns
    If WorksheetFunction.CountIf(r, ">0") = 0 Then r.EntireColumn.Hidden = True
  Next
  Application.ScreenUpdating = True
End Sub

а если его переделать на УДАЛЕНИЕ 0 колонок, то не все колонки с 0 удаляются:
Код:

Sub скрытьстолб()
Dim r As Range
  Application.ScreenUpdating = False
  For Each r In Range("B23:M23").Columns
    If WorksheetFunction.CountIf(r, ">0") = 0 Then r.EntireColumn.Delete
  Next
  Application.ScreenUpdating = True
End Sub

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор



спасибо
Вложения
Тип файла: xlsx 1234.xlsx (12.0 Кб, 2 просмотров)

Последний раз редактировалось Serge_Bliznykov; 27.06.2018 в 14:19.
ignatenko_e вне форума   Ответить с цитированием
Старый 27.06.2018, 14:23   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,613
Репутация: 5352
По умолчанию

Цитата:
Сообщение от ignatenko_e Посмотреть сообщение
а если его переделать на УДАЛЕНИЕ 0 колонок, то не все колонки с 0 удаляются:
проблема в том, что в цикле изменяется количество обрабатываемых столбцов (и их порядок).
вот смотрите, пусть r - 5-й столбец.
условие WorksheetFunction.CountIf(r, ">0") выполняется,
что происходит с этим столбцом? Верно, он удаляется.
Какой столбец теперь становится 5-м ? 6-й. а 7-й столбец становится 6-м.
А какой столбец в цикле будет обрабатываться следующим? 6-й,
но на месте 6-го стоит 7-й, а 6-й остался на месте 5-го... Его мы пропустили.
и так далее.

Нужно или менять цикл на другой или менять алгоритм обработки.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 27.06.2018, 14:44   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,613
Репутация: 5352
По умолчанию

Это можно сделать так:

Код:

Sub удалитьстолб()
  Dim r As Range, i As Long
  Application.ScreenUpdating = False

  For i = Range("M23").Column To Range("B23").Column Step -1
   Set r = Range(Cells(23, i), Cells(23, i))
   If WorksheetFunction.CountIf(r, ">0") = 0 Then r.EntireColumn.Delete
  Next i
  Application.ScreenUpdating = True
End Sub


или даже так:
Код:

Sub удалитьстолб()
  Dim i As Long
  Application.ScreenUpdating = False

  For i = Range("M23").Column To Range("B23").Column Step -1
   If Cells(23, i).Value <= 0 Then Columns(i).EntireColumn.Delete
  Next i
  Application.ScreenUpdating = True
End Sub

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 27.06.2018, 15:14   #4
ignatenko_e
Пользователь
 
Регистрация: 17.04.2018
Сообщений: 14
Репутация: 10
По умолчанию

спасибочки))))
ignatenko_e вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать\скрыть два разных DIV kutt JavaScript, Ajax 5 06.03.2011 13:33
Объединить два макроса KOSTIK1 Microsoft Office Excel 3 06.03.2010 23:09
Два одинаковых макроса GES Microsoft Office Excel 2 12.01.2010 12:27
Автоматически скрыть открыть колонки Gennady_58 Microsoft Office Excel 7 12.04.2009 11:07
скрыть процесс выполнения макроса Iskin Microsoft Office Excel 1 21.11.2008 08:28


14:17.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru