Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выполнение макроса на определенном листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выполнение макроса на определенном листе (Макросы/Sub)
Выполнение макроса на определенном листе
televnoy Дата: Четверг, 11.09.2014, 13:51 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте имеется макрос удаления строк, что следует изменить чтоб он выполнялся на определенном листе?

[vba]
Код
Sub Udalenie_Pustyh_Strok()
Dim r As Long, FirstRow As Long, LastRow As Long
FirstRow = ActiveSheet.UsedRange.Row
LastRow = ActiveSheet.UsedRange.Rows.Count - 1 + ActiveSheet.UsedRange.Row
       For r = LastRow To FirstRow Step -1
           If Application.CountA(Rows(r)) = 0 Then
               Rows(r).Delete
           End If
       Next r
End Sub
[/vba]

Вроде переименовал Активный на определенный лист, но он выполняется всеровно на активном листе.
Это как я переделал.

[vba]
Код
Sub Udalenie_Pustyh_Strok2()
Dim r As Long, FirstRow As Long, LastRow As Long
FirstRow = Sheets("Все данные").UsedRange.Row
LastRow = Sheets("Все данные").UsedRange.Rows.Count - 1 + Sheets("Все данные").UsedRange.Row
       For r = LastRow To FirstRow Step -1
           If Application.CountA(Rows(r)) = 0 Then
               Rows(r).Delete
           End If
       Next r
End Sub
[/vba]

Условие макрос должен выполнятся на какой бы странице я не был, но удаление строк происходило только на листе "Все данные"
К сообщению приложен файл: forum3.xls (62.0 Kb)


О-па! 0_o

Сообщение отредактировал televnoy - Четверг, 11.09.2014, 13:54
 
Ответить
СообщениеЗдравствуйте имеется макрос удаления строк, что следует изменить чтоб он выполнялся на определенном листе?

[vba]
Код
Sub Udalenie_Pustyh_Strok()
Dim r As Long, FirstRow As Long, LastRow As Long
FirstRow = ActiveSheet.UsedRange.Row
LastRow = ActiveSheet.UsedRange.Rows.Count - 1 + ActiveSheet.UsedRange.Row
       For r = LastRow To FirstRow Step -1
           If Application.CountA(Rows(r)) = 0 Then
               Rows(r).Delete
           End If
       Next r
End Sub
[/vba]

Вроде переименовал Активный на определенный лист, но он выполняется всеровно на активном листе.
Это как я переделал.

[vba]
Код
Sub Udalenie_Pustyh_Strok2()
Dim r As Long, FirstRow As Long, LastRow As Long
FirstRow = Sheets("Все данные").UsedRange.Row
LastRow = Sheets("Все данные").UsedRange.Rows.Count - 1 + Sheets("Все данные").UsedRange.Row
       For r = LastRow To FirstRow Step -1
           If Application.CountA(Rows(r)) = 0 Then
               Rows(r).Delete
           End If
       Next r
End Sub
[/vba]

Условие макрос должен выполнятся на какой бы странице я не был, но удаление строк происходило только на листе "Все данные"

Автор - televnoy
Дата добавления - 11.09.2014 в 13:51
Rioran Дата: Четверг, 11.09.2014, 13:58 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
televnoy, здравствуйте.

Вы всё сделали правильно, разве что упустили один маленький момент. Ваш Delete удаляет строки Rows, вот эти строки тоже надо было привязать к листу. Предлагаю макрос подкорректировать так. Обратите внимание - в двух случаях перед Rows поставлена точка - это своего рода якорь для With.

[vba]
Код
Sub Udalenie_Pustyh_Strok2()

Dim r As Long, FirstRow As Long, LastRow As Long

With Sheets("Все данные")
       FirstRow = .UsedRange.Row
       LastRow = .UsedRange.Rows.Count - 1 + .UsedRange.Row
       For r = LastRow To FirstRow Step -1
           If Application.CountA(.Rows(r)) = 0 Then
               .Rows(r).Delete
           End If
       Next r
End With

End Sub
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Четверг, 11.09.2014, 13:58
 
Ответить
Сообщениеtelevnoy, здравствуйте.

Вы всё сделали правильно, разве что упустили один маленький момент. Ваш Delete удаляет строки Rows, вот эти строки тоже надо было привязать к листу. Предлагаю макрос подкорректировать так. Обратите внимание - в двух случаях перед Rows поставлена точка - это своего рода якорь для With.

[vba]
Код
Sub Udalenie_Pustyh_Strok2()

Dim r As Long, FirstRow As Long, LastRow As Long

With Sheets("Все данные")
       FirstRow = .UsedRange.Row
       LastRow = .UsedRange.Rows.Count - 1 + .UsedRange.Row
       For r = LastRow To FirstRow Step -1
           If Application.CountA(.Rows(r)) = 0 Then
               .Rows(r).Delete
           End If
       Next r
End With

End Sub
[/vba]

Автор - Rioran
Дата добавления - 11.09.2014 в 13:58
televnoy Дата: Четверг, 11.09.2014, 14:11 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 120
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Rioran, Спасибо работает на высшем уровне hands


О-па! 0_o
 
Ответить
СообщениеRioran, Спасибо работает на высшем уровне hands

Автор - televnoy
Дата добавления - 11.09.2014 в 14:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выполнение макроса на определенном листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!