powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / [Excel] Как скопировать диапазон с листа на лист с шириной колонок?
16 сообщений из 16, страница 1 из 1
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082030
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копирую шапку таблицы с одного листа на другой

Код: vbnet
1.
2.
3.
4.
5.
6.
Sub Title(Beg)
   With Worksheets("Шапка").UsedRange
      Beg = .Rows.Count
      .Copy Sheets("Результат").Range("A1")
   End With
End Sub



Но при таком варианте не сохраняются ширина столбцов с листа "Шапка"...
Есть какой-то вариант скопировать и эту информацию?
----------
Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST
Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082088
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) копировать не диапазон, а столбцы целиком
б) пробежаться по коллекции столбцов и перенести их ширину в новый лист
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082197
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro , ясно...
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082200
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro , может вообще копирнуть лист в лист?
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082216
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Shocker.Pro , может вообще копирнуть лист в лист?вы МЕНЯ спрашиваете?
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082535
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro , я вроде все оформил в виде обращения именно к тебе...

Но по большему счету вопрос ко все, кто и меет опыт работы с этим я зыком и ПО...
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082548
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но странно, откуда бы мне (а также всем, кто имеет опыт работы с этим языком и ПО) знать, нужно ли тебе копировать лист в лист?
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082659
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНо странно, откуда бы мне (а также всем, кто имеет опыт работы с этим языком и ПО) знать, нужно ли тебе копировать лист в лист?

5 баллов!

Может голосование устроить? Кто за то, чтобы ТС скопировал весь лист?
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082752
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaможет вообще копирнуть лист в лист?Вообще-то - да.
Если у вас лист "Результат" каждый раз наполняется заново - то проще сделать лист-шаблон с шапкой, форматированием, формулами... затем, когда нужно получить результат:
- удаляем лист "Результат"
- копируем лист-шаблон, создавая новый лист
- переименовываем новый лист в "Результат"
- заполняем "Результат" данными
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082841
Basile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaКопирую шапку таблицы с одного листа на другой

Код: vbnet
1.
2.
3.
4.
5.
6.
Sub Title(Beg)
   With Worksheets("Шапка").UsedRange
      Beg = .Rows.Count
      .Copy Sheets("Результат").Range("A1")
   End With
End Sub


Но при таком варианте не сохраняются ширина столбцов с листа "Шапка"...
Есть какой-то вариант скопировать и эту информацию?
Можно немного дописать функцию Title:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Title(Beg)
    With Worksheets("Шапка").UsedRange
        Beg = .Rows.Count
        .Copy Sheets("Результат").Range("A1")
    End With

    Dim i As Integer
    For i = 1 To Worksheets("Шапка").UsedRange.Columns.Count
        Worksheets("Результат").Columns(i).ColumnWidth = Worksheets("Шапка").UsedRange.Columns(i).ColumnWidth
    Next
End Sub



А можно так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub Title(Beg)
    Dim rHead As Range    ' Область источник
    Set rHead = Worksheets("Шапка").UsedRange
    Dim rResult As Range  ' Область получатель
    Set rResult = Sheets("Результат").Range("A1")

    Beg = rHead.Rows.Count
    rHead.Copy rResult

    ' Без этого тоже будет работать, но так корректнее...
    Set rResult = rResult.Resize(rHead.Rows.Count, rHead.Columns.Count)

    ' Выставляем ширину колонок для области получателя
    Dim i As Integer
    For i = 1 To rHead.Columns.Count
        rResult.Columns(i).ColumnWidth = rHead.Columns(i).ColumnWidth
    Next

    ' А если надо, то и высоту строк...
    For i = 1 To rHead.Rows.Count
        rResult.Rows(i).RowHeight = rHead.Rows(i).RowHeight
    Next
End Sub


Последний вариант лучше тем, что логика оперирует с переменными определёнными в начале процедуры. Если, к примеру, лист "Шапка" со временем переименуется в "Заголовок", а на листе "Результат" нужно будет выводить данные начиная с ячейки "B2", то изменения в процедуре будут минимальными. Да и код читается удобнее, IMHO.
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082919
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMЕсли у вас лист "Результат" каждый раз наполняется заново
Именно так и есть...

AndreTM- удаляем лист "Результат"
- копируем лист-шаблон, создавая новый лист
- переименовываем новый лист в "Результат"
- заполняем "Результат" данными
Жаль что нужно лист "Результат" удалять... Тогда наверное проще сделать шаблон вообще без него т.к. он там будет явно лишний.

А как тогда "расставить" листы в нужном мне порядке?
Мне нужна например такая структура.
Шаблон:
- параметры
- SQL
- шапка
Итоговый документ:
- параметры
- результат
- SQL
- шапка

Т.е. "Результат" вклинивается между "Параметры" и "SQL"...
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38082922
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BasileМожно немного дописать функцию Title
Спасибо за примеры!
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38083482
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quote krvsa]AndreTMЖаль что нужно лист "Результат" удалять... Тогда наверное проще сделать шаблон вообще без него т.к. он там будет явно лишний.

А как тогда "расставить" листы в нужном мне порядке?Какой "лишний" и где? Слово "шаблон" в данном контексте подразумевало ваш конкретный лист "Шапка". У вас есть одна книга, в которой вы работаете. Естественно, в ней почти всегда есть лист "Результат". Когда вам нужно заново сформировать "Результат" - вы удаляете старый лист и создаете новый с тем же именем...
С "расставлением" же листов вообще вопроса не понял - при добавлении нового листа можно указать его местоположение в коллекции; можно в любое время переставить ярлычок листа в нужное место...
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38083503
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, кстати, вспомнил, что можно лист и не удалять-создавать, это я задумался над другой задачей... Так что да, просто скопировать лист в лист:
Код: vbnet
1.
Sheets("Шапка").Cells.Copy Sheets("Результат").Cells
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38083713
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMТак что да, просто скопировать лист в лист:
Код: vbnet
1.
Sheets("Шапка").Cells.Copy Sheets("Результат").Cells


Отлично работает! Спасибо.
...
Рейтинг: 0 / 0
[Excel] Как скопировать диапазон с листа на лист с шириной колонок?
    #38083716
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMпри добавлении нового листа можно указать его местоположение в коллекции;
Примерчик бы вот этого действа...

AndreTMможно в любое время переставить ярлычок листа в нужное место...
Это не про наших пользователей...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / [Excel] Как скопировать диапазон с листа на лист с шириной колонок?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]