Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Программирование в Excele. Как скрыть строки?   Найти похожие ветки 

 
Cheater ©   (2005-06-11 12:54) [0]

Есть столбец. Неважно какой. Допустим А. В этой столбце либо есть определенные данные, либо нет. Иными словами, ячейки могут быть пустыми или с определенным текстом. Вопрос вот в чем! Нужно чтобы после нажатия на кнопку был проверен столбик, к примеру, А. Если в нем есть какой-то текст (т.е ячейка не пустая), то строку трогать не надо, а если нет никого текста, то строка должна исчезнуть. Именно исчезнуть, а не удалиться. Иными словами, код должен проверить ячейки A1,A2,A3... Если например, А1 - пустая, то строку 1 надо спрятать, а если не пустая, то соответственно с ней ничего делать не надо, а следует перейти к следующей ячейки А2 и.т.д.

Затем нажав на вторую кнопку все должно вернуться на место/ Т.е в одном случае надо сделать hide определенных строк, а в другом случае unhide всего  . Понимаю, что объяснение несколько кривое, но как смог. Сам в Visual Basic не разбираюсь, но сделал здоровый экселевский файл, который делает кучу расчетов, проверок и.т.д. и сейчас для того чтобы полностью закончить проект необходимо решить обозначенную проблему. Большая просьба указать исходник целиком, чтобы просто потом вставить в обработку событий кнопки.


 
TUser ©   (2005-06-11 13:02) [1]

Примерно так

Sub Hide (Column as integer)
 dim R as range
 R:=selection  

 c=0: i=1: last = -1
 while c < 100
   if cells(i,Column) <> "" then
     if c <> 0 then
       Rows (format(last+1)+":"+format(i-1)).Select
       Selection.entirerows.hide = true
     endif
     c=0: last = i;
   else
     c=c+1
   endif
   i=i+1
 wend

 R.select
end sub

sub Show;
 dim R as range
 R:=selection  

 cells.select
 selection.entirerows.hide = false
 R.select
end sub


PS. Сервис -> Макросы -> Начать запись + минимальные знания Бейсика.


 
TUser ©   (2005-06-11 13:05) [2]

Кстати, можно и без VBA обойтись - отфильтровать пустые строки и сделать им hide.


 
Cheater ©   (2005-06-11 13:32) [3]

Чего-то не работает.

> Кстати, можно и без VBA обойтись - отфильтровать пустые
> строки и сделать им hide.

В ручную, конечно, можно, но ведь задача именно программно отфильтровать и сделать hide.


 
TUser ©   (2005-06-11 14:27) [4]

Конечно не работает - никто ж это дело не тестил :) Вот тебе рабочий вариант.

Sub Hide(Column As Integer)
c = 0: i = 1: last = -1
While c < 100
  If Cells(i, Column) <> "" Then
    If c <> 0 Then
      Rows(Format(last + 1) + ":" + Format(i - 1)).Select
      Selection.EntireRow.Hidden = True
    End If
    c = 0: last = i
  Else
    c = c + 1
  End If
  i = i + 1
Wend

Range("A1").Select
End Sub

Sub Show()
Cells.Select
Selection.EntireRow.Hidden = False

Range("A1").Select
End Sub

Sub HideA()
 Call Hide(1)
End Sub



Страницы: 1 вся ветка

Текущий архив: 2005.07.11;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.04 c
14-1118157101
D-S@nt
2005-06-07 19:11
2005.07.11
как раскрыть скобки?


3-1117560303
md
2005-05-31 21:25
2005.07.11
как прочитать данные из Query


14-1118055709
1008
2005-06-06 15:01
2005.07.11
legalize (Украина, госструктуры)


1-1118668385
Erik1
2005-06-13 17:13
2005.07.11
Использование BinarySearch в DeCAL?


1-1118890532
FDA
2005-06-16 06:55
2005.07.11
Как открыть файл AutoCAD?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский