Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с макросом пожалуйста)  (Прочитано 14657 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
Kortes
Гость
« : 25-03-2010 09:54 » 

Всем привет)
Не поможете ничего не понимающему в VB человеку?)

Есть такой макрос (в строке проверяет значение в определённой ячейке, если она пустая, скрывает всю строку):

Range("d5:d5").Select 'выбор проверяемой ячейки
If Range("d5") = 0 Then 'сравнение с нулем
Rows("5:5").Select 'выбор строки
Selection.EntireRow.Hidden = True 'скрыть строку

Помогите пожалуйста изменить его, чтобы он действовал не на одну строку, а на всю таблицу, скрывая в ней все строки в которых присутствует пустая ячейка в диапазоне d5:d100

Заранее благодарен за помощь)
Записан
anton13
Участник

ru
Offline Offline

« Ответ #1 : 08-04-2010 16:11 » 

Я в принципе вопрос понял. Только не пойму скрыть это что? Что после этого происходит?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 09-04-2010 05:51 » 

Kortes, скрипт покоцанный: не хватает end if. Чтобы обработать несколько строк, сделай цикл по строкам.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Kortes
Гость
« Ответ #3 : 09-04-2010 13:44 » 

anton13,
Скрывается строка без данных в заданой ячейке.
RXL,
Я бы сделал, если бы знал как) Я в этом ну совсем ничего не понимаю( Чтобы применить этот макрос ко всей таблице, я повторил этот кусок раз 100, получился макрос высотой метров 5, который периодически глючит))
Наверняка это можно сделать как-то более красиво и не так громоздко)

Заранее спасибо)
Записан
anton13
Участник

ru
Offline Offline

« Ответ #4 : 09-04-2010 17:13 » 

Я конечно не то спрашивал, ну да ладно и так понял. Давно на VBA не писал и сразу говорю это можно сделать несколькими способами. Но вот такую фигню сделал проверил работает:

Sub Макрос1()

For i = 1 To 50 'здесь ты задаёшь то количество строк которое тебе нужно у меня 50 однёрку не трогай это означает, что отбор будет с первой строки

If Cells(i, 1) = 0 Then Rows(i).Select 'а вот тут однёрка означает номер столбца в данном случае A если D будет цифра 4 и т.д. настрой Excel не на буквы а на цифры чтобы лучше ориентироваться

Selection.EntireRow.Hidden = True

Next i

End Sub


Я не совсем понял по каким параметрам ты хочешь отбирать строки если в них будет хоть одна пустая клетка во всей строке или ты просто хочешь пройтись по определённому столбцу. И тему назови как-нибудь по другому там "Сортировка строк" или "Исчезающие строки"
« Последнее редактирование: 09-04-2010 17:26 от anton13 » Записан
anton13
Участник

ru
Offline Offline

« Ответ #5 : 09-04-2010 17:33 » 

Кстати RXL в данном случае End if не нужен в VBA так принято.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 10-04-2010 08:42 » 

Кстати RXL в данном случае End if не нужен в VBA так принято.

Ужас! Я полагал, что синтаксис VBA совпадает с VB6...

Админ у меня сообщение не видно до конца это можно исправить?

Проблема не ясна. Напиши мне в личку и приведи скриншот.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
anton13
Участник

ru
Offline Offline

« Ответ #7 : 10-04-2010 10:38 » 

RXL

Цитата
Ужас! Я полагал, что синтаксис VBA совпадает с VB6...

Не в принципе они одинаковые просто здесь такая особенность если написать выражение после Then в одну строчку то End if не надо:

Sub Макрос()

For i = 1 To 50

If Cells(i, 1) = 0 Then Rows(i).Select
Selection.EntireRow.Hidden = True

Next i

End Sub


А если на следующей строке то надо:

Sub Макрос()

For i = 1 To 50

If Cells(i, 1) = 0 Then
Rows(i).Select
Selection.EntireRow.Hidden = True

End If

Next i

End Sub


Цитата
Проблема не ясна. Напиши мне в личку и приведи скриншот.

С проблемой вчера разобрались
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 11-04-2010 09:22 » new

anton13, про однострочный синтаксис я знаю. Только в примере вставлен комментарий, что означает, что в одну строку поместить if и оператор нельзя.
Если надо перенести оператор на следующую строку, на предыдущей строке надо после пробела поставить символ подчеркивания.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
anton13
Участник

ru
Offline Offline

« Ответ #9 : 11-04-2010 09:37 » 

А да точно у него так.
Записан
Kortes
Гость
« Ответ #10 : 12-04-2010 07:43 » 

anton13, спасибо большое, всё получилось в лучшем виде)

Всем спасибо за ответы.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines