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


Автор: resseg 23.6.2010, 20:41
Здравствуйте.
Подскажите, покажите, когда то делал, сейчас не могу сообразить.
На листе Excel скрыто определенное количество столбцов.
Как макросом перебрать все ячейки в диапазоне от D1 до NW1 на предмет поиска даты при условии совпадения с датой  элемента управления Lab_Data.Caption, а затем открыть найденный столбец.

Автор: FINANSIST 24.6.2010, 08:36
Код

Sub prompt()
Dim rn As Range: Dim fdate As Date: Dim cll As Variant
Set rn = Application.InputBox("Select looking area", Type:=8)
Let fdate = InputBox("Input the date is needed")
For Each cll In rn.Cells
    If cll.Value = fdate Then
        cll.EntireColumn.Hidden = False
    Exit For
    End If
Next cll
End Sub

Автор: resseg 24.6.2010, 11:55
Здравствуйте.
Вот пример открытия строк и столбцов.
Строки открываются, так как надо, а столбцы открываются одновременно. Необходимо чтобы столбцы открывались на выбранную дату…
У Вас код больно навороченный, в данном варианте он не подходит, мне кажется здесь все проще…

Автор: Hugo121 24.6.2010, 22:21
Там в коде напутано, плюс как оказалось (сам не знал) надо Text заменить на Value, иначе не видит текст скрытых строк:
Код

Private Sub CommandButton4_Click()
    'Открытие столбцов
    Dim i As Integer
    For i = 4 To 8
        If Cells(1, i).Value = Lab_Data.Caption Then
            Image1.BackColor = &HFF&
            Columns(i).EntireColumn.Hidden = False ' Открытие столбца
        End If
    Next
End Sub


А я бы лучше так написал - сразу виден диапазон:
Код

Private Sub CommandButton4_Click()
    'Открытие столбцов
    Dim cc As Range
        For Each cc In [d1:h1].Cells
        If cc.Value = Lab_Data.Caption Then
            Image1.BackColor = &HFF&
            cc.Columns.EntireColumn.Hidden = False ' Открытие столбца
        End If
    Next
End Sub

Автор: resseg 25.6.2010, 15:52
Спасибо Hugo121 разобрались.
Только почему не видит Text так и не понял.
Только почему не видит Text так и не понял.
Еще вопрос если будет необходимо от найденной ячейки открыть определенное количество столбцов вместе с найденной ячейкой, например 31 столбцов.
Как это будет выглядеть в вашем коде?

Автор: Hugo121 25.6.2010, 16:08
На других форумах есть ответ, почему не видит text - потому что цифры. Был бы текст - увидел бы smile
А если отрыть много столбцов - тогда типа Range надо задавать...

Автор: resseg 25.6.2010, 16:27
В строке то видет...

Автор: Hugo121 25.6.2010, 16:43
Парадокс smile

Вот так с диапазоном получилось - открывает найденную колонку и 4-е правее:

Код

 Range(Cells(1, cc.Columns.Column), Cells(1, cc.Columns.Column + 4)).EntireColumn.Hidden = False

Возможны варианты  - указать явно лист, откуда cells...

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