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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование диапазона с неактивного листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование диапазона с неактивного листа (Макросы/Sub)
Копирование диапазона с неактивного листа
Guslykov Дата: Среда, 16.09.2015, 12:04 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Всем привет.
Может кто подскажет.Вот этот код работает, но только на активном листе. Но если вдруг выбран лист не "Пилот" вылетает ошибка. Если потом выбрать лист "Пилот" и продолжить выполнение макроса то работает нормально.
[vba]
Код
Worksheets("Пилот").Range(Cells(ac, 20), Cells(xa, 200)).Copy Worksheets("Пилот").Range(Cells(ac, 22), Cells(xa, 202))
[/vba]
Спасибо.
[moder]Используйте для кода кнопку #.
Поправила.[/moder]


Сообщение отредактировал Manyasha - Среда, 16.09.2015, 12:48
 
Ответить
СообщениеВсем привет.
Может кто подскажет.Вот этот код работает, но только на активном листе. Но если вдруг выбран лист не "Пилот" вылетает ошибка. Если потом выбрать лист "Пилот" и продолжить выполнение макроса то работает нормально.
[vba]
Код
Worksheets("Пилот").Range(Cells(ac, 20), Cells(xa, 200)).Copy Worksheets("Пилот").Range(Cells(ac, 22), Cells(xa, 202))
[/vba]
Спасибо.
[moder]Используйте для кода кнопку #.
Поправила.[/moder]

Автор - Guslykov
Дата добавления - 16.09.2015 в 12:04
Manyasha Дата: Среда, 16.09.2015, 12:47 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Guslykov, перед Cells тоже укажите нужный лист:
[vba]
Код
With Worksheets("Пилот")
     .Range(.Cells(ac, 20), .Cells(xa, 200)).Copy .Range(.Cells(ac, 22), .Cells(xa, 202))
End With
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеGuslykov, перед Cells тоже укажите нужный лист:
[vba]
Код
With Worksheets("Пилот")
     .Range(.Cells(ac, 20), .Cells(xa, 200)).Copy .Range(.Cells(ac, 22), .Cells(xa, 202))
End With
[/vba]

Автор - Manyasha
Дата добавления - 16.09.2015 в 12:47
Viv Дата: Среда, 16.09.2015, 14:51 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 2 ±
Замечаний: 60% ±

Excel 2003;Excel 2013
Активируй в начале Лист Worksheets("Пилот").Activate


www.vbastudio.ru
 
Ответить
СообщениеАктивируй в начале Лист Worksheets("Пилот").Activate

Автор - Viv
Дата добавления - 16.09.2015 в 14:51
Guslykov Дата: Среда, 16.09.2015, 15:28 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Manyasha, Нет не проходит история все равно лист должен быть активным иначе ошибка. Неужели без предварительного активирования никак нельзя
 
Ответить
СообщениеManyasha, Нет не проходит история все равно лист должен быть активным иначе ошибка. Неужели без предварительного активирования никак нельзя

Автор - Guslykov
Дата добавления - 16.09.2015 в 15:28
Guslykov Дата: Среда, 16.09.2015, 15:30 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003
Viv, Это конечно сделать не сложно, но листы на экране мелькать будут это не очень приятно.
 
Ответить
СообщениеViv, Это конечно сделать не сложно, но листы на экране мелькать будут это не очень приятно.

Автор - Guslykov
Дата добавления - 16.09.2015 в 15:30
buchlotnik Дата: Среда, 16.09.2015, 18:39 | Сообщение № 6
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Чтоб не мелькали используйте[[vba]
Код
Application.ScreenUpdating = False
[/vba]а после процедуры неплохо бы вернуть true B)


Сообщение отредактировал buchlotnik - Среда, 16.09.2015, 18:44
 
Ответить
СообщениеЧтоб не мелькали используйте[[vba]
Код
Application.ScreenUpdating = False
[/vba]а после процедуры неплохо бы вернуть true B)

Автор - buchlotnik
Дата добавления - 16.09.2015 в 18:39
AndreTM Дата: Среда, 16.09.2015, 19:39 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
А копировать нужно именно ячейки? Может быть, хватит и значений?
Ну и Range() здесь - функция, точка не нужна...
[vba]
Код
With Worksheets("Пилот")
      Range(.Cells(ac, 22), .Cells(xa, 202)).Value = Range(.Cells(ac, 20), .Cells(xa, 200)).Value
End With
[/vba]иникаких .ScreenUpdating... :)

Да, кстати, если ac и xa - это переменные для номеров столбцов "AC" и "XA", то вот именно тогда можно использовать .Range и собрать символьное имя диапазона...


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеА копировать нужно именно ячейки? Может быть, хватит и значений?
Ну и Range() здесь - функция, точка не нужна...
[vba]
Код
With Worksheets("Пилот")
      Range(.Cells(ac, 22), .Cells(xa, 202)).Value = Range(.Cells(ac, 20), .Cells(xa, 200)).Value
End With
[/vba]иникаких .ScreenUpdating... :)

Да, кстати, если ac и xa - это переменные для номеров столбцов "AC" и "XA", то вот именно тогда можно использовать .Range и собрать символьное имя диапазона...

Автор - AndreTM
Дата добавления - 16.09.2015 в 19:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование диапазона с неактивного листа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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