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

Вход

Регистрация

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

 

= Мир MS Excel/скрыть/показать столбцы по условию - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
скрыть/показать столбцы по условию
карандаш Дата: Понедельник, 01.04.2013, 02:17 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Здравствуйте!

есть код для сокрытия/показа столбцов, которые отмечены непустыми ячейками в первой строке
[vba]
Код
Private Sub sh_All_Click()
On Error Resume Next
      rc_ = Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).Count
      If Err.Number > 0 Then
          Rows("1:1").SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = False
          All.Caption = "скрыть"
      Else
          Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = True
          All.Caption = "показать"
      End If

On Error GoTo 0
End Sub
[/vba]

помогите, пожалуйста, модифицировать код (если это возможно), под следующее условие

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

условие скрытия/показа столбца - пустая/непустая ячейка в строке 2

чтобы столбцы скрывались или показывались если в ячейках строки 2 в диапазоне D:L пусто или непусто
на первом листе показана развернутая таблица, на втором - как бы хотелось еë видеть

таких блоков столбцов может быть два (см. лист3)
К сообщению приложен файл: hidecol.xls (41.5 Kb)


Сообщение отредактировал карандаш - Понедельник, 01.04.2013, 02:24
 
Ответить
СообщениеЗдравствуйте!

есть код для сокрытия/показа столбцов, которые отмечены непустыми ячейками в первой строке
[vba]
Код
Private Sub sh_All_Click()
On Error Resume Next
      rc_ = Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).Count
      If Err.Number > 0 Then
          Rows("1:1").SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = False
          All.Caption = "скрыть"
      Else
          Rows("1:1").SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants, 23).EntireColumn.Hidden = True
          All.Caption = "показать"
      End If

On Error GoTo 0
End Sub
[/vba]

помогите, пожалуйста, модифицировать код (если это возможно), под следующее условие

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

условие скрытия/показа столбца - пустая/непустая ячейка в строке 2

чтобы столбцы скрывались или показывались если в ячейках строки 2 в диапазоне D:L пусто или непусто
на первом листе показана развернутая таблица, на втором - как бы хотелось еë видеть

таких блоков столбцов может быть два (см. лист3)

Автор - карандаш
Дата добавления - 01.04.2013 в 02:17
KuklP Дата: Понедельник, 01.04.2013, 09:01 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
У столбцов с заполненными данными д.б. заголовки:
[vba]
Код
Sub SPHide()
     Dim a As Range
     Columns.Hidden = 0
     On Error Resume Next
     For Each a In Range("c2", Cells(2, Columns.Count).End(xlToLeft)).SpecialCells(4).Areas
     a.Select
         a.Offset(, 1).Resize(, a.Cells.Count - 1).EntireColumn.Hidden = -1
     Next
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеУ столбцов с заполненными данными д.б. заголовки:
[vba]
Код
Sub SPHide()
     Dim a As Range
     Columns.Hidden = 0
     On Error Resume Next
     For Each a In Range("c2", Cells(2, Columns.Count).End(xlToLeft)).SpecialCells(4).Areas
     a.Select
         a.Offset(, 1).Resize(, a.Cells.Count - 1).EntireColumn.Hidden = -1
     Next
End Sub
[/vba]

Автор - KuklP
Дата добавления - 01.04.2013 в 09:01
карандаш Дата: Понедельник, 01.04.2013, 11:42 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
KuklP, простите, если я правильно понимаю, то "End(xlToLeft)" означает конец наличия данных
т.е. перебор ячеек, пока не кончаться какие-либо данные?

но на итоговом листе необходимо иметь пару таких блоков последовательно, как на Листе 3 в примере.
первые два листа были приведены для описания сути процесса сокрытия/показа, а в конечном варианте надо скрывать/показывать столбцы в двух таких блоках независимо друг от друга.

или я неправильно понял Вашу запись?

2. второй вопрос: на какое действие системы я должен назначить данный код?
ведь кнопки-то нет. Есть только действие пользователя по заполнению или очищению ячеек в строке 2
подскажите, пожалуйста
 
Ответить
СообщениеKuklP, простите, если я правильно понимаю, то "End(xlToLeft)" означает конец наличия данных
т.е. перебор ячеек, пока не кончаться какие-либо данные?

но на итоговом листе необходимо иметь пару таких блоков последовательно, как на Листе 3 в примере.
первые два листа были приведены для описания сути процесса сокрытия/показа, а в конечном варианте надо скрывать/показывать столбцы в двух таких блоках независимо друг от друга.

или я неправильно понял Вашу запись?

2. второй вопрос: на какое действие системы я должен назначить данный код?
ведь кнопки-то нет. Есть только действие пользователя по заполнению или очищению ячеек в строке 2
подскажите, пожалуйста

Автор - карандаш
Дата добавления - 01.04.2013 в 11:42
KuklP Дата: Понедельник, 01.04.2013, 16:45 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Цитата (карандаш)
KuklP, простите, если я правильно понимаю, то "End(xlToLeft)" означает конец наличия данных т.е. перебор ячеек, пока не кончаться какие-либо данные?
Найдет последнюю заполненную ячейку в указанной строке. Поэтому и писал:
Цитата (KuklP)
У столбцов с заполненными данными д.б. заголовки
Если же Вы знаете последнюю ячейку в строке 2 и она постоянна, то можете указать ее. Избавите Экс от лишних вычислений smile
P.S. в личку стоит писать, только если нет возможности в примере НЕ приводить персональных(секретных) данных. Ну, или если хотите оплатить услуги. smile Все остальное в теме, на форуме. И не стоит обращаться в теме лично к кому-то. Обращайтесь к форуму, это существенно увеличит Ваши шансы быстрей получить ответ. Форумчане, видя личное обращение, просто покидают тему(законы вежливости).


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Цитата (карандаш)
KuklP, простите, если я правильно понимаю, то "End(xlToLeft)" означает конец наличия данных т.е. перебор ячеек, пока не кончаться какие-либо данные?
Найдет последнюю заполненную ячейку в указанной строке. Поэтому и писал:
Цитата (KuklP)
У столбцов с заполненными данными д.б. заголовки
Если же Вы знаете последнюю ячейку в строке 2 и она постоянна, то можете указать ее. Избавите Экс от лишних вычислений smile
P.S. в личку стоит писать, только если нет возможности в примере НЕ приводить персональных(секретных) данных. Ну, или если хотите оплатить услуги. smile Все остальное в теме, на форуме. И не стоит обращаться в теме лично к кому-то. Обращайтесь к форуму, это существенно увеличит Ваши шансы быстрей получить ответ. Форумчане, видя личное обращение, просто покидают тему(законы вежливости).

Автор - KuklP
Дата добавления - 01.04.2013 в 16:45
Wasilich Дата: Понедельник, 01.04.2013, 21:35 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Цитата (карандаш)
действие пользователя по заполнению или очищению ячеек в строке 2

Так что ли, хотите?
К сообщению приложен файл: 5817825.xls (47.5 Kb)
 
Ответить
Сообщение
Цитата (карандаш)
действие пользователя по заполнению или очищению ячеек в строке 2

Так что ли, хотите?

Автор - Wasilich
Дата добавления - 01.04.2013 в 21:35
карандаш Дата: Среда, 03.04.2013, 16:23 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Wasilic, именно!
это как раз то, что хотелось
супер!
спасибо!
 
Ответить
СообщениеWasilic, именно!
это как раз то, что хотелось
супер!
спасибо!

Автор - карандаш
Дата добавления - 03.04.2013 в 16:23
карандаш Дата: Среда, 03.04.2013, 16:36 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
KuklP,

Цитата (KuklP)
P.S. в личку стоит писать, только если нет возможности в примере НЕ приводить персональных(секретных) данных. Ну, или если хотите оплатить услуги.

именно так.
Первое имеет место, к сожалению.
Второе не исключается (и приветствуется) - одно дело подсказать, другое - выполнить некоторый объем работы, затратить время на не очень интересный случай.
плюс третье - файл в 2010.

Цитата (KuklP)
Все остальное в теме, на форуме. И не стоит обращаться в теме лично к кому-то. Обращайтесь к форуму, это существенно увеличит Ваши шансы быстрей получить ответ.

обращался (может как-то не так - не все понимаю в правилах и нюансах общения). К сожалению, не получилось.

Цитата (KuklP)
Форумчане, видя личное обращение, просто покидают тему(законы вежливости).

не совсем понял... Личка разве не для личных вопросов? мой вопрос в личку не касался содержания данной темы.
хоть и не понял, но учту на будущее.
 
Ответить
СообщениеKuklP,

Цитата (KuklP)
P.S. в личку стоит писать, только если нет возможности в примере НЕ приводить персональных(секретных) данных. Ну, или если хотите оплатить услуги.

именно так.
Первое имеет место, к сожалению.
Второе не исключается (и приветствуется) - одно дело подсказать, другое - выполнить некоторый объем работы, затратить время на не очень интересный случай.
плюс третье - файл в 2010.

Цитата (KuklP)
Все остальное в теме, на форуме. И не стоит обращаться в теме лично к кому-то. Обращайтесь к форуму, это существенно увеличит Ваши шансы быстрей получить ответ.

обращался (может как-то не так - не все понимаю в правилах и нюансах общения). К сожалению, не получилось.

Цитата (KuklP)
Форумчане, видя личное обращение, просто покидают тему(законы вежливости).

не совсем понял... Личка разве не для личных вопросов? мой вопрос в личку не касался содержания данной темы.
хоть и не понял, но учту на будущее.

Автор - карандаш
Дата добавления - 03.04.2013 в 16:36
Wasilich Дата: Среда, 03.04.2013, 17:37 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Цитата (карандаш)
Цитата (KuklP писал(а)):
Форумчане, видя личное обращение, просто покидают тему(законы вежливости).
не совсем понял... Личка разве не для личных вопросов?

Имелось ввиду не в личку, а на форуме, если обращаешься к кому-то лично, то остальные, даже зная ответ, могут покинуть тему.
 
Ответить
Сообщение
Цитата (карандаш)
Цитата (KuklP писал(а)):
Форумчане, видя личное обращение, просто покидают тему(законы вежливости).
не совсем понял... Личка разве не для личных вопросов?

Имелось ввиду не в личку, а на форуме, если обращаешься к кому-то лично, то остальные, даже зная ответ, могут покинуть тему.

Автор - Wasilich
Дата добавления - 03.04.2013 в 17:37
карандаш Дата: Четверг, 04.04.2013, 11:59 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Wasilic, понял, спасибо за пояснение

вопрос, к сожалению, остался не закрытым.

попробовал объединить обе подсказки, от Wasilic и KuklP, т.к. необходимо иметь обе функциональности
Доктор Франкенштейн из меня ещë тот... Мутант живет, но не так, как бы хотелось

вот код

хотелось бы, чтобы :
1. красные столбцы не появлялись, а зелëные не исчезали при срабатывании функции.
(это можно исправить с помощью костылей в виде заполненных или пустых ячеек строке 6. Но это не красиво и не дает решения в общем виде)
2. чтобы столбцы скрывались, если не только в строке заголовка (№6), но и в строках с данными есть данные
(т.к. сумма считается по всей строке и невозможно сделать сумму только по видимым ячейкам)
3. определить в коде функции константы, которые можно было бы менять в зависимости от кол-ва столбцов. Чтобы менять в одном месте, а не править в трех местах в коде.

помогите, пожалуйста, разобраться
(манипуляции с номером строки и столбцом G приводят к непредсказуемым и необъяснимым результатам,
a не понимая смысла кода подобрать верный вариант не получилось)
К сообщению приложен файл: avans1.xls (49.0 Kb)


Сообщение отредактировал карандаш - Четверг, 04.04.2013, 12:02
 
Ответить
СообщениеWasilic, понял, спасибо за пояснение

вопрос, к сожалению, остался не закрытым.

попробовал объединить обе подсказки, от Wasilic и KuklP, т.к. необходимо иметь обе функциональности
Доктор Франкенштейн из меня ещë тот... Мутант живет, но не так, как бы хотелось

вот код

хотелось бы, чтобы :
1. красные столбцы не появлялись, а зелëные не исчезали при срабатывании функции.
(это можно исправить с помощью костылей в виде заполненных или пустых ячеек строке 6. Но это не красиво и не дает решения в общем виде)
2. чтобы столбцы скрывались, если не только в строке заголовка (№6), но и в строках с данными есть данные
(т.к. сумма считается по всей строке и невозможно сделать сумму только по видимым ячейкам)
3. определить в коде функции константы, которые можно было бы менять в зависимости от кол-ва столбцов. Чтобы менять в одном месте, а не править в трех местах в коде.

помогите, пожалуйста, разобраться
(манипуляции с номером строки и столбцом G приводят к непредсказуемым и необъяснимым результатам,
a не понимая смысла кода подобрать верный вариант не получилось)

Автор - карандаш
Дата добавления - 04.04.2013 в 11:59
  • Страница 1 из 1
  • 1
Поиск:

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