powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Новые листы в Excel
11 сообщений из 11, страница 1 из 1
Новые листы в Excel
    #36715594
Элvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, добрый день.

Подскажите, пжлст. Прописал макрос - при нажатии на кнопку данные с этого листа переносятся на другой, который вновь добавляется, при этом другой лист переименовывается из "лист1" в "график №1". Данный макрос работает для одного листа, проблема появляется, когда я пытаюсь еще раз запустить макрос. Он у меня прописан только для листа №1, когда повторно нажимаешь кнопку, добавляется лист №2 и VBA начинает ругаться. Какие изменения сделать или что нужно добавить, чтобы VBA не ругался.

p.s.: я в этом деле новичок, поэтому если возможно, опишите доступным языком.

Спасибо.
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36715644
Фотография -O_o-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Элvic,
пример файла. А там тебе помогут, я тоже не особо отец
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36715658
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант переименовывать не Sheets("Лист1").Name... а Sheets(2).Name...
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36715686
Элvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LETMEКак вариант переименовывать не Sheets("Лист1").Name... а Sheets(2).Name...

Ну тогда каждый раз придется переименовывать.. Просто файл делается не для меня, а для сторонних пользователей, которым и скопировать трудно, не то что ковыряться в ВБА.
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36715697
Элvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот так выглядит сам макро


Sub макрос1()

' Вывод графика на лист График №1

Range("A1:I85").Select
Selection.Copy
Sheets("График платежей").Select
Sheets.Add
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Sheets("лист1").Select
Sheets("лист1").Name = "График №1"

End Sub
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36715828
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...чесно говоря непонятно что нужно)
Штоп не ругался вначале вставить On Error Resume Next

ЗЫ: еще непонятно - зачем второе Selection.Copy
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36716110
Элvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LETME...чесно говоря непонятно что нужно)
Штоп не ругался вначале вставить On Error Resume Next

ЗЫ: еще непонятно - зачем второе Selection.Copy

Я не гуру в ВБА, поэтому все делал путем записи макроса. Второе selection. copy нужно было для того, чтобы скопировать и вставить на лист только значения, так как до этого скопировались и формулы.


А в начале чего поставить On Error Resume Next?

Как видно, это макрос работает только для листа1. То есть, если я нажимаю кнопку запуска макроса, то создается новый лист ("Лист1") в книге и туда копируются нужные данные. Так вот, если я повторно нажимаю кнопку запуска макроса, то создается новый лист ("лист2") и здесь ВБА начинает ругаться, а именно:

Run-time error '9':
subscript out of range


И мне нужно, чтобы не вылетало это сообщение, при повторном запуске макроса.
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36716454
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Элvic,

1. Смотрите: Вы создаёте в книге новый лист.
Excel, поскольку среди имён листов, названий типа "ЛистНомерТакой-то" нет, автоматически
присваивает ему имя "Лист1". (Был бы в книге последним "Лист3", новому листу было бы присвоено имя "Лист4").
Пока Вы не закроете и не откроете книгу вновь, при добавлении очередного листа, несмотря на переименование
предыдущего, ему будет присваиваться имя с номером, на единицу бОльшим предыдущего (до переименования).

Иначе говоря, Вы хотите выделить Лист1, а его в книге нет. Отсюда и ошибка.

2. Объясните подробно, что должен делать макрос: из опубликованного кода можно строить только предположения.
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36718061
Элvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlth,

Макрос должен выполнять следующее:

1. Есть исходный лист, на котором находятся ячеки с формулами.
2. На исходном листе находится настраиваемая кнопка, к которой подвязан макрос
3. При нажатии на эту кнопку должны происходить следующие дейстивия:

* все данные на исходном листе копируются;
* создается новый лист;
* скопированные данные вставляются на новый лист (при этом используется специальная вставка - ширина столбцов);
* копирутся данные на новом листе
* на том же новом листе скопированные данные вставляются в виде значений
* созданный новый лист переименовывается "График платежей1"

Все это работает, если я один раз запускаю макрос. При повторном запуске должно произойти то же самое только создается новый лист №2. Остальные действия те же. И вот этом случае вылетает сообщение об ошибке.
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36718726
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub макрос1()
Dim NewWS As Worksheet, ws As Worksheet, aWS() As Integer
Dim i As Integer, j As Integer
Range("A1:I85").Copy
Set NewWS = Sheets.Add
NewWS.Cells( 1 ,  1 ).PasteSpecial Paste:=xlPasteColumnWidths
NewWS.Cells( 1 ,  1 ).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "График №#*" Then
        ReDim Preserve aWS(i)
        j =  0 
        Do
            j = j +  1 
        Loop While IsNumeric(Right(ws.Name, j))
        aWS(i) = Right(ws.Name, j -  1 )
        i = i +  1 
    End If
Next
If i >  0  Then i = WorksheetFunction.Max(aWS)
NewWS.Name = "График №" & CStr(i +  1 )
NewWS.Cells( 1 ,  1 ).Select
End Sub
...
Рейтинг: 0 / 0
Новые листы в Excel
    #36719604
Элvic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vlth,

Спасибо огромное. Чуть исправил под себя и все работает.

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


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