Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

Программирование в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.049 c
1-1119590345
Earth
2005-06-24 09:19
2005.07.11
CD


6-1112672184
Zyb
2005-04-05 07:36
2005.07.11
Вопрос по сокетам


4-1115833822
RealGaffer
2005-05-11 21:50
2005.07.11
Размер файла


6-1112928016
Veles
2005-04-08 06:40
2005.07.11
Скорость поиска компьютера по IP


4-1115996081
_Вован
2005-05-13 18:54
2005.07.11
Сообщение "Ошибка 1931..." при инсталляции моей проги :(





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