Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Скрытие столбцов с элементами логики


Автор: Тимуха 14.7.2005, 01:48
Здравствуйте, уважаемые!

Задача такова: есть документ Exel с множеством парных столбцов, в каждой паре есть поле, содержащее цифру. Необходимо сделать так, чтобы если эта цифра равна нулю - соответствующая пара столбцов скрывалась (очень напрягает вручную скрывать сотни столбцов через Выделение диапазона - Скрыть), а если не равно 0 - все бы оставалось на своих местах.

Это необходимо для скрытия множества столбцов!
Спасибо.

Автор: Staruha 14.7.2005, 19:27
Вообще-то похожая тема была.Скрыть пустые строки .в Бэсике.
А так в общем запускаешь цикл если значение равно 0
тогда
Код

...Column.Hidden = True

Автор: Тимуха 14.7.2005, 19:54
[quote]
А так в общем запускаешь цикл если значение равно 0
[quote]

Если можно, прошу поподробнее smile

Я вообще тока первые шаги ступаю в этом нелегком деле.......

Автор: Staruha 14.7.2005, 20:12
Код

Private Sub CommandButton1_Click()
For x = 1 To 6
 If Cells(1, x).Value = 0 Then
  Columns(x).Hidden = True
  Columns(x - 1).Hidden = True
  End If
  Next
End Sub

Автор: likhobory 14.7.2005, 20:21
советую так записать
Код
'''''''''''''''''''''''''''''''''''''''
For x = 2 To 6 Step 2
'''''''''''''''''''''''''''''''''''''''''

дабы в 5 строке не вывалиться из цикла


Автор: Staruha 14.7.2005, 20:36
Что Шаг 2 Это точно.Столбцы же парные.Быстрее проскочит smile

Автор: Сезар 3.8.2005, 16:15
Хе-хе, Тимуха, кто бы ты ни был, а я тебя наверняка понимаю! У меня похожая ситуация, однако, немного другая. Как можно сделать открытие ячеек при том же сравнении с нулем? Смысл: есть товар (хотя бы 1на штука) в смете - Exel сам откроет ячейки, покажет товар; нету товара - не стоит показывать 100 не заказанных наименований товара. Помогите, профы, плиз!

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

Автор: Staruha 3.8.2005, 19:15
Цитата
есть товар (хотя бы 1на штука) в смете - Exel сам откроет ячейки, покажет товар; нету товара - не стоит показывать 100 не заказанных

если ячейки,тогда условное форматирование.Т.к можно скрыть либо столбец либо строку.
Цитата
сделать скрипт отката


Код

 Columns(x).Hidden = False 
smile

Автор: Displey 8.8.2005, 15:13
Здраствуйте!
А как можно будет сделать тоже самое со строками? Попробывал изменить код, но неполучилось :-(
Код

Private Sub CommandButton1_Click()
For y = 2 To 6 Step 2
 If Cells(1, y).Value = 0 Then
  Rows(y).Hidden = True
  
  End If
  Next
End Sub


Автор: Staruha 8.8.2005, 20:52
smile Надо вместо
Цитата
If Cells(1, y).Value = 0 Then


Код

If Cells(y, 1).Value = 0 Then

1 -номер просматриваемого столбца

Автор: Displey 9.8.2005, 06:26
Staruha
Спасибо сейчас опробую , все smile

Автор: Displey 9.8.2005, 09:50
Staruha
Здраствуйте!
Если можно, то помогите пожалуйста с решением след. задачи.
У меня два макроса которые нужно объеденить в один.
Пример:
Код


Sub Пример()
'
' Пример Макрос
' Макрос записан 08.08.2005 (Action)
'

'
    Range("A1:A19").Select
    Selection.Copy
    Range("H1").Select
    ActiveSheet.Paste
    Range("I16").Select
End Sub


и следущий

Код

Private Sub CommandButton2_Click()
For y = 1 To 30 Step 1
 If Cells(y, 1).Value = 0 Then
  Rows(y).Hidden = True
  
  End If
  Next
End Sub




Нужно создать последовательность , тоесть сначала копирование , потом сортировка по 0.
Я хотел сделать это при помощи "Макрос Рекордер", но он не повторяет действия :-(

Автор: Staruha 9.8.2005, 20:27
Код

SPrivate Sub CommandButton2_Click()
  
  Range("A1:A19").Select
    Selection.Copy
    Range("H1").Select
    ActiveSheet.Paste
    Range("I16").Select

 For y = 1 To 30 Step 1
 If Cells(y, 1).Value = 0 Then
  Rows(y).Hidden = True
End Sub
Собственно все работает.Только ты копируешь параллельно.Поэтому в обоих списках нулевые строки скроются.И это не сортировка

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)