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

Вход

Регистрация

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

 

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

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не скрывать скрываемые строки при добавлении строк (Макросы/Sub)
Не скрывать скрываемые строки при добавлении строк
Anis625 Дата: Понедельник, 04.03.2019, 23:59 | Сообщение № 1
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Добрый вечер, участникам форума!

В очередной раз с просьбой подпилить макрос.

Год назад создал базу данных. Из нее по критериям вывожу данные в таблицу (во вложении) и перед выгрузкой листа в отдельный файл макросом скрываю пустые строки.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, R&
R = 14
Range("14:20").EntireRow.Hidden = False
For Each c In Range("A14:A20")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]

В течение года были определенные неудобства с файлом:
1. При добавлении строки макрос автоматически скрывает строку и приходится отображать строку, чтобы потом добавить номер строки таблицы, и макрос не скрывает строку.
2. Любые действия (например, занесение данных в таблицу) срабатывает автоматический макрос (т.е. разворачивает и скрывает строки). Ну и подтормаживает из-за этого.
3. Если ошибочно занес информацию и нужно вернуть прежнее значение с макросом нет такой возможности сделать например нажатием Ctrl+Z.

Подскажите, пожалуйста, как это можно вылечить?
К сообщению приложен файл: ___..1-III__201.xlsm (21.6 Kb)
 
Ответить
СообщениеДобрый вечер, участникам форума!

В очередной раз с просьбой подпилить макрос.

Год назад создал базу данных. Из нее по критериям вывожу данные в таблицу (во вложении) и перед выгрузкой листа в отдельный файл макросом скрываю пустые строки.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, R&
R = 14
Range("14:20").EntireRow.Hidden = False
For Each c In Range("A14:A20")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]

В течение года были определенные неудобства с файлом:
1. При добавлении строки макрос автоматически скрывает строку и приходится отображать строку, чтобы потом добавить номер строки таблицы, и макрос не скрывает строку.
2. Любые действия (например, занесение данных в таблицу) срабатывает автоматический макрос (т.е. разворачивает и скрывает строки). Ну и подтормаживает из-за этого.
3. Если ошибочно занес информацию и нужно вернуть прежнее значение с макросом нет такой возможности сделать например нажатием Ctrl+Z.

Подскажите, пожалуйста, как это можно вылечить?

Автор - Anis625
Дата добавления - 04.03.2019 в 23:59
Pelena Дата: Вторник, 05.03.2019, 08:18 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Повесить макрос на кнопку и запускать по мере надобности не вариант?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Повесить макрос на кнопку и запускать по мере надобности не вариант?

Автор - Pelena
Дата добавления - 05.03.2019 в 08:18
Anis625 Дата: Вторник, 05.03.2019, 10:11 | Сообщение № 3
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Pelena,

Я За этот вариант и даже попытался это сделать вчера до размещения темы, но в Alt+F8 он даже не отображается. То есть как я понимаю это автоматический макрос. Может [vba]
Код
(ByVal Target As Range)
[/vba] в макросе делает его таким невидимым?
 
Ответить
СообщениеPelena,

Я За этот вариант и даже попытался это сделать вчера до размещения темы, но в Alt+F8 он даже не отображается. То есть как я понимаю это автоматический макрос. Может [vba]
Код
(ByVal Target As Range)
[/vba] в макросе делает его таким невидимым?

Автор - Anis625
Дата добавления - 05.03.2019 в 10:11
sboy Дата: Вторник, 05.03.2019, 10:14 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Он размещен в модуле листа
Надо перенести в обычный модуль и назначить кнопку (сочетание клавиш) или запускать в ручном режиме


Яндекс: 410016850021169
 
Ответить
СообщениеОн размещен в модуле листа
Надо перенести в обычный модуль и назначить кнопку (сочетание клавиш) или запускать в ручном режиме

Автор - sboy
Дата добавления - 05.03.2019 в 10:14
_Boroda_ Дата: Вторник, 05.03.2019, 10:20 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
перед выгрузкой листа в отдельный файл макросом скрываю пустые строки

Макрос работает не "перед выгрузкой", а при любом изменении на листе. Определитесь - Вам как нужно
Судя по формулам, Вы тянете по номеру данные из другого листа, тогда как вы вводите номер в А, если у Вас скрыты незаполненные строки? Сначала их показываете, а потом дописываете новый номер? Тогда зачем их скрывать после каждого телодвижения? Похоже, что нужно перекинуть макрос из Sub Worksheet_Change в обычный Sub и действительно запускать его только перед выгрузкой
А если все-таки догадка неверна, то такой вариант
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count >= Columns.Count Then Exit Sub
    r0_ = 11
    n_ = Cells(Rows.Count, 2).End(3).Row - r0_ + 1
    If Not Intersect(Target, Cells(r0_, 1).Resize(n_)) Is Nothing Then
        For Each a0_ In Cells(r0_, 1).Resize(n_)
            If a0_ = "" Then
                a0_.Rows.EntireRow.Hidden = True
            End If
        Next a0_
    End If
End Sub

[/vba]
К сообщению приложен файл: -1-III_201_1.xlsm (23.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
перед выгрузкой листа в отдельный файл макросом скрываю пустые строки

Макрос работает не "перед выгрузкой", а при любом изменении на листе. Определитесь - Вам как нужно
Судя по формулам, Вы тянете по номеру данные из другого листа, тогда как вы вводите номер в А, если у Вас скрыты незаполненные строки? Сначала их показываете, а потом дописываете новый номер? Тогда зачем их скрывать после каждого телодвижения? Похоже, что нужно перекинуть макрос из Sub Worksheet_Change в обычный Sub и действительно запускать его только перед выгрузкой
А если все-таки догадка неверна, то такой вариант
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count >= Columns.Count Then Exit Sub
    r0_ = 11
    n_ = Cells(Rows.Count, 2).End(3).Row - r0_ + 1
    If Not Intersect(Target, Cells(r0_, 1).Resize(n_)) Is Nothing Then
        For Each a0_ In Cells(r0_, 1).Resize(n_)
            If a0_ = "" Then
                a0_.Rows.EntireRow.Hidden = True
            End If
        Next a0_
    End If
End Sub

[/vba]

Автор - _Boroda_
Дата добавления - 05.03.2019 в 10:20
_Boroda_ Дата: Вторник, 05.03.2019, 10:22 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Надо перенести в обычный модуль
Зачем? вовсе не обязательно
Просто переименуйте его, напишите
[vba]
Код
Sub SkrStr()
Dim c As Range, R&
R = 14
Range("14:20").EntireRow.Hidden = False
For Each c In Range("A14:A20")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]
И Вы увидете его в списке макросов


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Надо перенести в обычный модуль
Зачем? вовсе не обязательно
Просто переименуйте его, напишите
[vba]
Код
Sub SkrStr()
Dim c As Range, R&
R = 14
Range("14:20").EntireRow.Hidden = False
For Each c In Range("A14:A20")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]
И Вы увидете его в списке макросов

Автор - _Boroda_
Дата добавления - 05.03.2019 в 10:22
sboy Дата: Вторник, 05.03.2019, 11:04 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Зачем? вовсе не обязательно

ну по фэн-шую :)
события в листах
процедуры в модулях


Яндекс: 410016850021169
 
Ответить
Сообщение
Зачем? вовсе не обязательно

ну по фэн-шую :)
события в листах
процедуры в модулях

Автор - sboy
Дата добавления - 05.03.2019 в 11:04
Pelena Дата: Вторник, 05.03.2019, 11:44 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
[offtop]
по фэн-шую

С языка снял :D [/offtop]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение[offtop]
по фэн-шую

С языка снял :D [/offtop]

Автор - Pelena
Дата добавления - 05.03.2019 в 11:44
Anis625 Дата: Вторник, 05.03.2019, 13:05 | Сообщение № 9
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
_Boroda_,
Макрос работает не "перед выгрузкой"

Согласен, я запускаю другой макрос, который активирует этот макрос (он срабатывает при любых действиях на листе), чтобы скрыть строки. Знаю-знаю не по фен-шуй это =)

А потом этот макрос начинает мешать когда он срабатывает при любых действиях на листе. И при добавлении строки.
 
Ответить
Сообщение_Boroda_,
Макрос работает не "перед выгрузкой"

Согласен, я запускаю другой макрос, который активирует этот макрос (он срабатывает при любых действиях на листе), чтобы скрыть строки. Знаю-знаю не по фен-шуй это =)

А потом этот макрос начинает мешать когда он срабатывает при любых действиях на листе. И при добавлении строки.

Автор - Anis625
Дата добавления - 05.03.2019 в 13:05
Anis625 Дата: Вторник, 05.03.2019, 13:07 | Сообщение № 10
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Тогда зачем их скрывать после каждого телодвижения?


Нашел и адаптировал макрос под себя на скорую руку. На тот момент даже это было значительное облегчение ручного труда. В течение года были определенные трудности, поэтому и ищу варианты оптимизации.
 
Ответить
Сообщение
Тогда зачем их скрывать после каждого телодвижения?


Нашел и адаптировал макрос под себя на скорую руку. На тот момент даже это было значительное облегчение ручного труда. В течение года были определенные трудности, поэтому и ищу варианты оптимизации.

Автор - Anis625
Дата добавления - 05.03.2019 в 13:07
_Boroda_ Дата: Вторник, 05.03.2019, 13:24 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
ну по фэн-шую
С чего вдруг по фен-шую-то? Кто сказал? Где про это написано? Да даже если и написано

Я наоборот, те коды, которые к листу относятся, стараюсь именно в модуле этого листа писать. Очень удобно - не нужно указывать лист, а запускать макрос можно с любого листа.
Поясню - если в обычном модуле написано cells(1), то это ячейка А1 активного на момент запуска макроса листа, а если cells(1) написано в макросе, находящемся в модуле листа, то это по-любому ячейка А1 того листа, в модуле которого этот макрос находится. И если первоначально макрос пишется, допустим, для запуска с кнопки, находящейся на исполняемом листе, то впоследствии, когда таких кнопок на разных листах книги накапливается некоторое количество (а это достаточно часто случается - аппетиты, как известно, во время еды приходят) и становится неудобно нажимать, например, 10 кнопок в определенной последовательности, я пишу сборный макрос, который запускает подряд каждый макрос из этого десятка. А поскольку они все работают с разными листами, то получается, что в каждом из макросов должен быть явно указан лист. Но изначально-то макросы писались для работы на активных листах, то есть указывать лист не нужно было и конечно я его не указал. Все переписывать? Или в сборном макросе перед запуском каждого из макросов явно указывать лист? Вот совсем не радует

Вы скажете, что по фен-шую в любом случае указывать лист, в котором работаем (более того, пойдем дальше, нужно указывать и книгу тоже - вдруг макрос будет запущен при активной другой книге, поэтому как же без ThisWorkbook-то?, ну тогда уж и экземпляр Excel тоже надо, вдруг у нас их несколько запущено?). Да, в принципе все верно, нужно указывать (вы сами всегда так делаете?), но зачем мне весь этот геморрой с указанием макросу места для его работы, если есть решение гораздо проще? Я просто пишу макрос там, где мне нужно, чтобы он работал и не морочу себе голову
А вот если мне нужно, чтобы макрос работал независимо от листа книги, тогда да, я конечно пишу его в обычном модуле

Кстати, про явное указание - представим себе обычный мой рабочий файл, таких множество, в нем десяток-другой макросов, каждый из которых тысячи полторы-две-три строк. Обращений к листу много, не всегда можно сначала все счить в массив, а потом положить обратно, и в процессе написания всего этого мне нужно, помимо всего прочего, еще и следить за тем, чтобы указывать лист? Или, если сначала написать With Лист, то следить за точками перед Range и Cells? Да никогда я не услежу за этим, обязательно где-нибудь пропущу. Не, нафиг, кому нравится, пусть по фен-шую делает, а я буду делать так, как мне удобно


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
ну по фэн-шую
С чего вдруг по фен-шую-то? Кто сказал? Где про это написано? Да даже если и написано

Я наоборот, те коды, которые к листу относятся, стараюсь именно в модуле этого листа писать. Очень удобно - не нужно указывать лист, а запускать макрос можно с любого листа.
Поясню - если в обычном модуле написано cells(1), то это ячейка А1 активного на момент запуска макроса листа, а если cells(1) написано в макросе, находящемся в модуле листа, то это по-любому ячейка А1 того листа, в модуле которого этот макрос находится. И если первоначально макрос пишется, допустим, для запуска с кнопки, находящейся на исполняемом листе, то впоследствии, когда таких кнопок на разных листах книги накапливается некоторое количество (а это достаточно часто случается - аппетиты, как известно, во время еды приходят) и становится неудобно нажимать, например, 10 кнопок в определенной последовательности, я пишу сборный макрос, который запускает подряд каждый макрос из этого десятка. А поскольку они все работают с разными листами, то получается, что в каждом из макросов должен быть явно указан лист. Но изначально-то макросы писались для работы на активных листах, то есть указывать лист не нужно было и конечно я его не указал. Все переписывать? Или в сборном макросе перед запуском каждого из макросов явно указывать лист? Вот совсем не радует

Вы скажете, что по фен-шую в любом случае указывать лист, в котором работаем (более того, пойдем дальше, нужно указывать и книгу тоже - вдруг макрос будет запущен при активной другой книге, поэтому как же без ThisWorkbook-то?, ну тогда уж и экземпляр Excel тоже надо, вдруг у нас их несколько запущено?). Да, в принципе все верно, нужно указывать (вы сами всегда так делаете?), но зачем мне весь этот геморрой с указанием макросу места для его работы, если есть решение гораздо проще? Я просто пишу макрос там, где мне нужно, чтобы он работал и не морочу себе голову
А вот если мне нужно, чтобы макрос работал независимо от листа книги, тогда да, я конечно пишу его в обычном модуле

Кстати, про явное указание - представим себе обычный мой рабочий файл, таких множество, в нем десяток-другой макросов, каждый из которых тысячи полторы-две-три строк. Обращений к листу много, не всегда можно сначала все счить в массив, а потом положить обратно, и в процессе написания всего этого мне нужно, помимо всего прочего, еще и следить за тем, чтобы указывать лист? Или, если сначала написать With Лист, то следить за точками перед Range и Cells? Да никогда я не услежу за этим, обязательно где-нибудь пропущу. Не, нафиг, кому нравится, пусть по фен-шую делает, а я буду делать так, как мне удобно

Автор - _Boroda_
Дата добавления - 05.03.2019 в 13:24
_Boroda_ Дата: Вторник, 05.03.2019, 13:25 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
ищу варианты оптимизации.

Мы ж Вам написали уже варианты. Например http://www.excelworld.ru/forum/10-41008-271947-16-1551770568


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
ищу варианты оптимизации.

Мы ж Вам написали уже варианты. Например http://www.excelworld.ru/forum/10-41008-271947-16-1551770568

Автор - _Boroda_
Дата добавления - 05.03.2019 в 13:25
Anis625 Дата: Вторник, 05.03.2019, 13:55 | Сообщение № 13
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
[vba]
Код
Sub SkrStr()
Dim c As Range, R&
R = 14
Range("14:20").EntireRow.Hidden = False
For Each c In Range("A14:A20")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]

Этот макрос как раз то что доктор прописал =) с кнопочным скрытием пустых строк

Возможно для этого отдельно конечно тему нужно создавать или можно уточниться в этой ветке?
В макросе четкая привязка к нижней границы диапазона и когда добавляется строка диапазон не расширяется
 
Ответить
Сообщение[vba]
Код
Sub SkrStr()
Dim c As Range, R&
R = 14
Range("14:20").EntireRow.Hidden = False
For Each c In Range("A14:A20")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]

Этот макрос как раз то что доктор прописал =) с кнопочным скрытием пустых строк

Возможно для этого отдельно конечно тему нужно создавать или можно уточниться в этой ветке?
В макросе четкая привязка к нижней границы диапазона и когда добавляется строка диапазон не расширяется

Автор - Anis625
Дата добавления - 05.03.2019 в 13:55
Anis625 Дата: Вторник, 05.03.2019, 13:58 | Сообщение № 14
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
А вот если мне нужно, чтобы макрос работал независимо от листа книги, тогда да, я конечно пишу его в обычном модуле

Согласен с вами. В данном случае только в модуль не получится прописать т.к. другие листы имеют другое содержание и формат.

Но этот нюанс учту. Т.к. до пояснения я не совсем понимал когда макрос нужно зашивать в лист, а когда в модуль. Спасибо Вам большое =)
 
Ответить
Сообщение
А вот если мне нужно, чтобы макрос работал независимо от листа книги, тогда да, я конечно пишу его в обычном модуле

Согласен с вами. В данном случае только в модуль не получится прописать т.к. другие листы имеют другое содержание и формат.

Но этот нюанс учту. Т.к. до пояснения я не совсем понимал когда макрос нужно зашивать в лист, а когда в модуль. Спасибо Вам большое =)

Автор - Anis625
Дата добавления - 05.03.2019 в 13:58
_Boroda_ Дата: Вторник, 05.03.2019, 14:12 | Сообщение № 15
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не-не-не, это только мое видение вопроса, ответ на посты Сергея и Лены. Это скорее приглашение к дискуссии, чем утверждение о правильности

А нижнюю границу диапазона Вы можете подсмотреть в макросе из поста выше того, откуда Вы взяли SkrStr
Cells(Rows.Count, 2).End(3).Row


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе-не-не, это только мое видение вопроса, ответ на посты Сергея и Лены. Это скорее приглашение к дискуссии, чем утверждение о правильности

А нижнюю границу диапазона Вы можете подсмотреть в макросе из поста выше того, откуда Вы взяли SkrStr
Cells(Rows.Count, 2).End(3).Row

Автор - _Boroda_
Дата добавления - 05.03.2019 в 14:12
Anis625 Дата: Вторник, 05.03.2019, 14:32 | Сообщение № 16
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
_Boroda_,

Попробовал его [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count >= Columns.Count Then Exit Sub
    r0_ = 11
    n_ = Cells(Rows.Count, 2).End(3).Row - r0_ + 1
    If Not Intersect(Target, Cells(r0_, 1).Resize(n_)) Is Nothing Then
        For Each a0_ In Cells(r0_, 1).Resize(n_)
            If a0_ = "" Then
                a0_.Rows.EntireRow.Hidden = True
            End If
        Next a0_
    End If
End Sub
[/vba]

Макрос никак не срабатывает. Добавлял строки, добавлял значения и ничего не происходило
 
Ответить
Сообщение_Boroda_,

Попробовал его [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count >= Columns.Count Then Exit Sub
    r0_ = 11
    n_ = Cells(Rows.Count, 2).End(3).Row - r0_ + 1
    If Not Intersect(Target, Cells(r0_, 1).Resize(n_)) Is Nothing Then
        For Each a0_ In Cells(r0_, 1).Resize(n_)
            If a0_ = "" Then
                a0_.Rows.EntireRow.Hidden = True
            End If
        Next a0_
    End If
End Sub
[/vba]

Макрос никак не срабатывает. Добавлял строки, добавлял значения и ничего не происходило

Автор - Anis625
Дата добавления - 05.03.2019 в 14:32
sboy Дата: Вторник, 05.03.2019, 14:49 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
представим себе обычный мой рабочий файл, таких множество, в нем десяток-другой макросов, каждый из которых тысячи полторы-две-три строк.

%) а есть еще и необычные?
ну тогда может быть и уместно так разносить
У меня 80% всех макросов для работы в Personal и в надстройках


Яндекс: 410016850021169
 
Ответить
Сообщение
представим себе обычный мой рабочий файл, таких множество, в нем десяток-другой макросов, каждый из которых тысячи полторы-две-три строк.

%) а есть еще и необычные?
ну тогда может быть и уместно так разносить
У меня 80% всех макросов для работы в Personal и в надстройках

Автор - sboy
Дата добавления - 05.03.2019 в 14:49
_Boroda_ Дата: Вторник, 05.03.2019, 14:59 | Сообщение № 18
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Anis625, Вам не нужен весь макрос, Вам нужно последнюю строку. Я ж Вам цитату отдельно привел
Cells(Rows.Count, 2).End(3).Row
- это и есть номер последней заполненной строки в столбце 2

sboy, а необычные бывают, да. Без макросов которые. Но это очень большая редкость


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеAnis625, Вам не нужен весь макрос, Вам нужно последнюю строку. Я ж Вам цитату отдельно привел
Cells(Rows.Count, 2).End(3).Row
- это и есть номер последней заполненной строки в столбце 2

sboy, а необычные бывают, да. Без макросов которые. Но это очень большая редкость

Автор - _Boroda_
Дата добавления - 05.03.2019 в 14:59
Anis625 Дата: Вторник, 05.03.2019, 15:34 | Сообщение № 19
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
_Boroda_,

[vba]
Код
Sub SkrStr()
Dim c As Range, R&
R = 14
Range("14:Cells(Rows.Count, 2).End(3).Row").EntireRow.Hidden = False
For Each c In Range("A14:Cells(Rows.Count, 2).End(3).Row")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]

=) так не сработало.

Представляю ваши мысли после прочтения сообщения =)
 
Ответить
Сообщение_Boroda_,

[vba]
Код
Sub SkrStr()
Dim c As Range, R&
R = 14
Range("14:Cells(Rows.Count, 2).End(3).Row").EntireRow.Hidden = False
For Each c In Range("A14:Cells(Rows.Count, 2).End(3).Row")
    If c = "" Then
    c.Rows.EntireRow.Hidden = True
    End If
Next
End Sub
[/vba]

=) так не сработало.

Представляю ваши мысли после прочтения сообщения =)

Автор - Anis625
Дата добавления - 05.03.2019 в 15:34
_Boroda_ Дата: Вторник, 05.03.2019, 15:56 | Сообщение № 20
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А зачем Вы расчет в кавычки всунули? Это тогда текст получается
[vba]
Код
Range("14:" & Cells(Rows.Count, 2).End(3).Row).EntireRow.Hidden = False
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА зачем Вы расчет в кавычки всунули? Это тогда текст получается
[vba]
Код
Range("14:" & Cells(Rows.Count, 2).End(3).Row).EntireRow.Hidden = False
[/vba]

Автор - _Boroda_
Дата добавления - 05.03.2019 в 15:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не скрывать скрываемые строки при добавлении строк (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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