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

Вход

Регистрация

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

 

= Мир MS Excel/Скопировать/вставить строки макросом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Скопировать/вставить строки макросом (Макросы/Sub)
Скопировать/вставить строки макросом
was_il Дата: Пятница, 23.04.2021, 13:23 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Добрый день!
Есть книга Excel в которой каждый лист - табель учета рабочего времени на месяц.
На каждого работника выделен блок из 8 строк (12:19). Для удобства работы и сохранения в неизменности формул (листы запаролены - 1111) с помощью макрорекордера в книгу введен макрос ("Insert_RABOTNIKA"), которые добавляют блок для следующего работника с очисткой ячеек во вставленных строках (там где нет формул) от уже введенных значений (A12:A19,B12:B17,C12:C17,G12:AK18,AR13:AS17,AT15:AU15,AT17:AU17). Также есть макросы для удаления блока ячеек ("Delete_RABOTNIKA") и скрытия/показа определенных строк ("Spryatat_stroki", "Pokazat_stroki"). Макросы запускаются кнопками на каждом листе. В таблице присутствует условное форматирование отдельных ячеек с использованием формул для определения условий форматирования.
На моем компьютере все работает, хотя и не очень быстро. Но когда передал на другой компьютер, то появилась ошибка. После ввода значений в ячейки G12:AK17 (неважно во сколько ячеек) и нажатия кнопки запуска макроса "Вставить блок ячеек..." получаем "Run-time error -'2147417848 (80010108) Вызываемый объект отключен от клиентов".
Самостоятельно победить проблему не смог.
К сообщению приложен файл: 0830236.xlsm(254.7 Kb)


Сообщение отредактировал was_il - Суббота, 24.04.2021, 13:14
 
Ответить
СообщениеДобрый день!
Есть книга Excel в которой каждый лист - табель учета рабочего времени на месяц.
На каждого работника выделен блок из 8 строк (12:19). Для удобства работы и сохранения в неизменности формул (листы запаролены - 1111) с помощью макрорекордера в книгу введен макрос ("Insert_RABOTNIKA"), которые добавляют блок для следующего работника с очисткой ячеек во вставленных строках (там где нет формул) от уже введенных значений (A12:A19,B12:B17,C12:C17,G12:AK18,AR13:AS17,AT15:AU15,AT17:AU17). Также есть макросы для удаления блока ячеек ("Delete_RABOTNIKA") и скрытия/показа определенных строк ("Spryatat_stroki", "Pokazat_stroki"). Макросы запускаются кнопками на каждом листе. В таблице присутствует условное форматирование отдельных ячеек с использованием формул для определения условий форматирования.
На моем компьютере все работает, хотя и не очень быстро. Но когда передал на другой компьютер, то появилась ошибка. После ввода значений в ячейки G12:AK17 (неважно во сколько ячеек) и нажатия кнопки запуска макроса "Вставить блок ячеек..." получаем "Run-time error -'2147417848 (80010108) Вызываемый объект отключен от клиентов".
Самостоятельно победить проблему не смог.

Автор - was_il
Дата добавления - 23.04.2021 в 13:23
was_il Дата: Суббота, 24.04.2021, 13:22 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Макрос на вставку блока строк такой
[vba]
Код
Sub Insert_RABOTNIKA()
'
' ВСТАВКА_БЛОКА Макрос
'

'
    ActiveSheet.Unprotect Password:="1111"
    Rows("12:19").Copy
    Rows("20:20").Insert Shift:=xlDown
    Range("A12:A19,B12:B17,C12:C17,G12:AK18,AR13:AS17,AT15:AU15,AT17:AU17").ClearContents
    Application.CutCopyMode = False
    ActiveSheet.Protect Password:="1111", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
[/vba]
 
Ответить
СообщениеМакрос на вставку блока строк такой
[vba]
Код
Sub Insert_RABOTNIKA()
'
' ВСТАВКА_БЛОКА Макрос
'

'
    ActiveSheet.Unprotect Password:="1111"
    Rows("12:19").Copy
    Rows("20:20").Insert Shift:=xlDown
    Range("A12:A19,B12:B17,C12:C17,G12:AK18,AR13:AS17,AT15:AU15,AT17:AU17").ClearContents
    Application.CutCopyMode = False
    ActiveSheet.Protect Password:="1111", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
[/vba]

Автор - was_il
Дата добавления - 24.04.2021 в 13:22
_Igor_61 Дата: Суббота, 24.04.2021, 21:44 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 388
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
Несколько лет назад возникала такая же проблема, искал решения в инете, конкретного и однозначного ответа не нашел. В своем случае тогда методом тыка нашел выход в пересохранении книги после внесения изменений, заработало. Потом неполадка сама собой исчезла, так и не понял, в чем было дело. Попробуйте варианты, может какой-то и сработает:
1. В Range с объединенными ячейками указывать только первую (левую верхнюю, а не весь диапазон)
2. Активировать лист, на котором будут производиться действия (указать не не ActiveSheet а Sheet("такой-то лист").Activate, и после этого уже все del и copy)
3. См. 2 + сразу же сохранить книгу
4. Записать все действия с Range в каждой отдельной строке, а не перечислять все в одних скобках
А может это и с областью печати связано - у Вас конкретные диапазоны установлены в диспетчере имен


Сообщение отредактировал _Igor_61 - Суббота, 24.04.2021, 21:53
 
Ответить
СообщениеНесколько лет назад возникала такая же проблема, искал решения в инете, конкретного и однозначного ответа не нашел. В своем случае тогда методом тыка нашел выход в пересохранении книги после внесения изменений, заработало. Потом неполадка сама собой исчезла, так и не понял, в чем было дело. Попробуйте варианты, может какой-то и сработает:
1. В Range с объединенными ячейками указывать только первую (левую верхнюю, а не весь диапазон)
2. Активировать лист, на котором будут производиться действия (указать не не ActiveSheet а Sheet("такой-то лист").Activate, и после этого уже все del и copy)
3. См. 2 + сразу же сохранить книгу
4. Записать все действия с Range в каждой отдельной строке, а не перечислять все в одних скобках
А может это и с областью печати связано - у Вас конкретные диапазоны установлены в диспетчере имен

Автор - _Igor_61
Дата добавления - 24.04.2021 в 21:44
was_il Дата: Понедельник, 26.04.2021, 17:08 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Попробовал предложенное _Igor_61.
Не помогло!
Пойду еще где-нибудь спрошу. Возможно кто-то сталкивался и подскажет!
 
Ответить
СообщениеПопробовал предложенное _Igor_61.
Не помогло!
Пойду еще где-нибудь спрошу. Возможно кто-то сталкивался и подскажет!

Автор - was_il
Дата добавления - 26.04.2021 в 17:08
was_il Дата: Среда, 12.05.2021, 16:07 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Может кто подскажет как переписать макрос так, чтобы блок строк вставлялся не после "шапки" таблицы, а после последней строки в ней.
 
Ответить
СообщениеМожет кто подскажет как переписать макрос так, чтобы блок строк вставлялся не после "шапки" таблицы, а после последней строки в ней.

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

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