Главная страница
    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.042 c
14-1118354857
хм
2005-06-10 02:07
2005.07.11
Что-то странное


6-1112687353
Sergey2005
2005-04-05 11:49
2005.07.11
Фильтр страниц, загружаемых через протокол HTTP


11-1101963783
BelchonokH
2004-12-02 08:03
2005.07.11
Message типа MouseWheel


14-1118376395
Stocker
2005-06-10 08:06
2005.07.11
Документация по Installshield 3.х настройка альяса BDE


1-1119447563
Максим
2005-06-22 17:39
2005.07.11
ListBox, GetShortPathName, exe-file





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский