Копирование диапазона без использования Select
ees
Дата: Среда, 08.11.2017, 16:20 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Добрый день! Столкнулся с проблемой при копировании диапазона с одного листа на другой без использования select и activate. В интернете нашел такой механизм: [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Set Rngl = Sheets(s0).Range(Cells(x0, y0), Cells(z0, n0)) Set Rng2 = Sheets(s1).Range(Cells(x1, y1), Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Если s0=s1, то все работает, а вот если нет, то выдает ошибку "Run-time error '1004'" Что бы всё работало необходимо добавить активацию листов. [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Worksheets(s0).Activate Set Rngl = Sheets(s0).Range(Cells(x0, y0), Cells(z0, n0)) Worksheets(s1).Activate Set Rng2 = Sheets(s1).Range(Cells(x1, y1), Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Вопрос в следующем, возможно ли как то при копировании диапазона из одного листа в другой обойтись без "Activate"? Спасибо!
Добрый день! Столкнулся с проблемой при копировании диапазона с одного листа на другой без использования select и activate. В интернете нашел такой механизм: [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Set Rngl = Sheets(s0).Range(Cells(x0, y0), Cells(z0, n0)) Set Rng2 = Sheets(s1).Range(Cells(x1, y1), Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Если s0=s1, то все работает, а вот если нет, то выдает ошибку "Run-time error '1004'" Что бы всё работало необходимо добавить активацию листов. [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Worksheets(s0).Activate Set Rngl = Sheets(s0).Range(Cells(x0, y0), Cells(z0, n0)) Worksheets(s1).Activate Set Rng2 = Sheets(s1).Range(Cells(x1, y1), Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Вопрос в следующем, возможно ли как то при копировании диапазона из одного листа в другой обойтись без "Activate"? Спасибо! ees
Сообщение отредактировал ees - Среда, 08.11.2017, 17:00
Ответить
Сообщение Добрый день! Столкнулся с проблемой при копировании диапазона с одного листа на другой без использования select и activate. В интернете нашел такой механизм: [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Set Rngl = Sheets(s0).Range(Cells(x0, y0), Cells(z0, n0)) Set Rng2 = Sheets(s1).Range(Cells(x1, y1), Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Если s0=s1, то все работает, а вот если нет, то выдает ошибку "Run-time error '1004'" Что бы всё работало необходимо добавить активацию листов. [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Worksheets(s0).Activate Set Rngl = Sheets(s0).Range(Cells(x0, y0), Cells(z0, n0)) Worksheets(s1).Activate Set Rng2 = Sheets(s1).Range(Cells(x1, y1), Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Вопрос в следующем, возможно ли как то при копировании диапазона из одного листа в другой обойтись без "Activate"? Спасибо! Автор - ees Дата добавления - 08.11.2017 в 16:20
sboy
Дата: Среда, 08.11.2017, 16:28 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Добрый день. Можно. Оформите код тегами, кнопка # на панели
Добрый день. Можно. Оформите код тегами, кнопка # на панели sboy
Яндекс: 410016850021169
Ответить
Сообщение Добрый день. Можно. Оформите код тегами, кнопка # на панели Автор - sboy Дата добавления - 08.11.2017 в 16:28
ees
Дата: Среда, 08.11.2017, 17:00 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Код оформил. А как можно обойтись без активации листов?
Код оформил. А как можно обойтись без активации листов? ees
Ответить
Сообщение Код оформил. А как можно обойтись без активации листов? Автор - ees Дата добавления - 08.11.2017 в 17:00
sboy
Дата: Среда, 08.11.2017, 17:06 |
Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
Добрый вот так попробуйте [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Set Rng1 = Range(Sheets(s0).Cells(x0, y0), Sheets(s0).Cells(z0, n0)) Set Rng2 = Range(Sheets(s1).Cells(x1, y1), Sheets(s1).Cells(z1, n1)) Rngl.Copy Rng2
[/vba]
Добрый вот так попробуйте [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Set Rng1 = Range(Sheets(s0).Cells(x0, y0), Sheets(s0).Cells(z0, n0)) Set Rng2 = Range(Sheets(s1).Cells(x1, y1), Sheets(s1).Cells(z1, n1)) Rngl.Copy Rng2
[/vba] sboy
Яндекс: 410016850021169
Ответить
Сообщение Добрый вот так попробуйте [vba]Код
Dim Rng2 As Range Dim Rng1 As Range Set Rng1 = Range(Sheets(s0).Cells(x0, y0), Sheets(s0).Cells(z0, n0)) Set Rng2 = Range(Sheets(s1).Cells(x1, y1), Sheets(s1).Cells(z1, n1)) Rngl.Copy Rng2
[/vba] Автор - sboy Дата добавления - 08.11.2017 в 17:06
ees
Дата: Среда, 08.11.2017, 17:24 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Спасибо. Теперь вышла 424 ошибка...
Спасибо. Теперь вышла 424 ошибка... ees
Ответить
Сообщение Спасибо. Теперь вышла 424 ошибка... Автор - ees Дата добавления - 08.11.2017 в 17:24
sboy
Дата: Среда, 08.11.2017, 17:26 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация:
724
±
Замечаний:
0% ±
Excel 2010
тогда кладите файл с полным кодом, гадать смысла нет
тогда кладите файл с полным кодом, гадать смысла нет sboy
Яндекс: 410016850021169
Ответить
Сообщение тогда кладите файл с полным кодом, гадать смысла нет Автор - sboy Дата добавления - 08.11.2017 в 17:26
Wasilich
Дата: Среда, 08.11.2017, 21:17 |
Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
s0 и s1 это имена листов или переменные? Координаты - тоже переменные? Где это видно, что они (переменные) адекватные. Попробуйте внести имена и координаты напрямую в отдельный код и проверьте. [vba]Код
Sub www() Dim Rng2 As Range Dim Rng1 As Range Set Rngl = Sheets("Имя0").Range(Cells(1, 1), Cells(10, 10)) Set Rng2 = Sheets("Имя1").Cells(1, 1) Rngl.Copy Rng2 End Sub
[/vba]
s0 и s1 это имена листов или переменные? Координаты - тоже переменные? Где это видно, что они (переменные) адекватные. Попробуйте внести имена и координаты напрямую в отдельный код и проверьте. [vba]Код
Sub www() Dim Rng2 As Range Dim Rng1 As Range Set Rngl = Sheets("Имя0").Range(Cells(1, 1), Cells(10, 10)) Set Rng2 = Sheets("Имя1").Cells(1, 1) Rngl.Copy Rng2 End Sub
[/vba] Wasilich
Ответить
Сообщение s0 и s1 это имена листов или переменные? Координаты - тоже переменные? Где это видно, что они (переменные) адекватные. Попробуйте внести имена и координаты напрямую в отдельный код и проверьте. [vba]Код
Sub www() Dim Rng2 As Range Dim Rng1 As Range Set Rngl = Sheets("Имя0").Range(Cells(1, 1), Cells(10, 10)) Set Rng2 = Sheets("Имя1").Cells(1, 1) Rngl.Copy Rng2 End Sub
[/vba] Автор - Wasilich Дата добавления - 08.11.2017 в 21:17
Hugo
Дата: Среда, 08.11.2017, 22:09 |
Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация:
707
±
Замечаний:
0% ±
2019
Wasilich , перед cells всегда нужно указывать владельца, иначе полезет на активный лист, ну или на лист где расположен код. Правильно sboy предложил.
Wasilich , перед cells всегда нужно указывать владельца, иначе полезет на активный лист, ну или на лист где расположен код. Правильно sboy предложил.Hugo
excel@nxt.ru webmoney: E265281470651 Z422237915069
Ответить
Сообщение Wasilich , перед cells всегда нужно указывать владельца, иначе полезет на активный лист, ну или на лист где расположен код. Правильно sboy предложил.Автор - Hugo Дата добавления - 08.11.2017 в 22:09
InExSu
Дата: Среда, 08.11.2017, 23:30 |
Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация:
96
±
Замечаний:
0% ±
Excel 2010, 365
[vba]Код
Sub ПереБдить() Dim Rng2 As Range, Rng1 As Range With Sheets(s0) Set Rngl = .Range(.Cells(x0, y0), .Cells(z0, n0)) End With With Sheets(s1) Set Rng2 = .Range(.Cells(x1, y1), .Cells(z1, n1)) End With Rngl.Copy Rng2 End Sub
[/vba]
[vba]Код
Sub ПереБдить() Dim Rng2 As Range, Rng1 As Range With Sheets(s0) Set Rngl = .Range(.Cells(x0, y0), .Cells(z0, n0)) End With With Sheets(s1) Set Rng2 = .Range(.Cells(x1, y1), .Cells(z1, n1)) End With Rngl.Copy Rng2 End Sub
[/vba] InExSu
Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
Ответить
Сообщение [vba]Код
Sub ПереБдить() Dim Rng2 As Range, Rng1 As Range With Sheets(s0) Set Rngl = .Range(.Cells(x0, y0), .Cells(z0, n0)) End With With Sheets(s1) Set Rng2 = .Range(.Cells(x1, y1), .Cells(z1, n1)) End With Rngl.Copy Rng2 End Sub
[/vba] Автор - InExSu Дата добавления - 08.11.2017 в 23:30
Hugo
Дата: Четверг, 09.11.2017, 00:31 |
Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация:
707
±
Замечаний:
0% ±
2019
Вообще надёжнее[vba]Код
Set Rng2 = Sheets(s1).Cells(x1, y1)
[/vba] и проще - не нужно отслеживать z1, n1
Вообще надёжнее[vba]Код
Set Rng2 = Sheets(s1).Cells(x1, y1)
[/vba] и проще - не нужно отслеживать z1, n1 Hugo
excel@nxt.ru webmoney: E265281470651 Z422237915069
Ответить
Сообщение Вообще надёжнее[vba]Код
Set Rng2 = Sheets(s1).Cells(x1, y1)
[/vba] и проще - не нужно отслеживать z1, n1 Автор - Hugo Дата добавления - 09.11.2017 в 00:31
alex77755
Дата: Четверг, 09.11.2017, 05:54 |
Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация:
64
±
Замечаний:
0% ±
[vba]Код
Sub ещё_проще() Sheets("Имя0").Cells(1, 1).Resize(10, 10).Copy Sheets("Имя1").Cells(1, 1) End Sub
[/vba]
[vba]Код
Sub ещё_проще() Sheets("Имя0").Cells(1, 1).Resize(10, 10).Copy Sheets("Имя1").Cells(1, 1) End Sub
[/vba] alex77755
Могу помочь в VB6, VBA Alex77755@mail.ru
Ответить
Сообщение [vba]Код
Sub ещё_проще() Sheets("Имя0").Cells(1, 1).Resize(10, 10).Copy Sheets("Имя1").Cells(1, 1) End Sub
[/vba] Автор - alex77755 Дата добавления - 09.11.2017 в 05:54
ees
Дата: Четверг, 09.11.2017, 11:59 |
Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Всем большое спасибо за помощь! Использовал [vba]Код
Sub ПереБдить() Dim Rng2 As Range, Rng1 As Range With Sheets(s0) Set Rngl = .Range(.Cells(x0, y0), .Cells(z0, n0)) End With With Sheets(s1) Set Rng2 = .Range(.Cells(x1, y1), .Cells(z1, n1)) End With Rngl.Copy Rng2 End Sub
[/vba]
Всем большое спасибо за помощь! Использовал [vba]Код
Sub ПереБдить() Dim Rng2 As Range, Rng1 As Range With Sheets(s0) Set Rngl = .Range(.Cells(x0, y0), .Cells(z0, n0)) End With With Sheets(s1) Set Rng2 = .Range(.Cells(x1, y1), .Cells(z1, n1)) End With Rngl.Copy Rng2 End Sub
[/vba] ees
Ответить
Сообщение Всем большое спасибо за помощь! Использовал [vba]Код
Sub ПереБдить() Dim Rng2 As Range, Rng1 As Range With Sheets(s0) Set Rngl = .Range(.Cells(x0, y0), .Cells(z0, n0)) End With With Sheets(s1) Set Rng2 = .Range(.Cells(x1, y1), .Cells(z1, n1)) End With Rngl.Copy Rng2 End Sub
[/vba] Автор - ees Дата добавления - 09.11.2017 в 11:59