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

Вход

Регистрация

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

 

= Мир MS Excel/Копировать лист с изменением значения в 1 ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать лист с изменением значения в 1 ячейке (Макросы Sub)
Копировать лист с изменением значения в 1 ячейке
Алсу Дата: Пятница, 16.08.2013, 18:25 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Добрый день, уважаемые форумчане!
Помогите пожалуйста найти решение.
Сразу скажу, я не обучалась программированию, мне нужно объяснять как школьнику ))
Стоит задача: создать макрос, при выполнении которого происходит:
1. копирование определенного листа (всегда одного и того же) вместе с формулами и форматами
2. подставление в одну определенную ячейку в каждом следующем листе следующего значения (значения перечислены в таблице на другом листе). Значения не повторяются.
либо так:
2. при копировании запрашивается номер ячейки, в котором записано изменяемое значение - после этого происходит копирование листа с уже новым значением.

В приложении файл. Лист который нужно копировать - Альфа, значение - регномер в ячейке В6.
Очень жду ваших ответов!
К сообщению приложен файл: __.rar (36.3 Kb)
 
Ответить
СообщениеДобрый день, уважаемые форумчане!
Помогите пожалуйста найти решение.
Сразу скажу, я не обучалась программированию, мне нужно объяснять как школьнику ))
Стоит задача: создать макрос, при выполнении которого происходит:
1. копирование определенного листа (всегда одного и того же) вместе с формулами и форматами
2. подставление в одну определенную ячейку в каждом следующем листе следующего значения (значения перечислены в таблице на другом листе). Значения не повторяются.
либо так:
2. при копировании запрашивается номер ячейки, в котором записано изменяемое значение - после этого происходит копирование листа с уже новым значением.

В приложении файл. Лист который нужно копировать - Альфа, значение - регномер в ячейке В6.
Очень жду ваших ответов!

Автор - Алсу
Дата добавления - 16.08.2013 в 18:25
Алсу Дата: Суббота, 17.08.2013, 16:21 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Serge_007, да
 
Ответить
СообщениеSerge_007, да

Автор - Алсу
Дата добавления - 17.08.2013 в 16:21
Алсу Дата: Суббота, 17.08.2013, 16:25 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
у меня пока получается создать копию с теми же данными, регномер приходится менять вручную. стоит цель сделать много таких листов (over 80) с изменяющимися значениями
 
Ответить
Сообщениеу меня пока получается создать копию с теми же данными, регномер приходится менять вручную. стоит цель сделать много таких листов (over 80) с изменяющимися значениями

Автор - Алсу
Дата добавления - 17.08.2013 в 16:25
KuklP Дата: Суббота, 17.08.2013, 16:57 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
у меня пока получается создать копию с теми же данными
Чего то я в файле этого не увидел :(
[vba]
Код
Public Sub www()
      Sheets("Альфа").Copy after:=Sheets(Sheets.Count)
      ActiveSheet.[b6] = ActiveSheet.[b6] + 1
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Суббота, 17.08.2013, 16:57
 
Ответить
Сообщение
у меня пока получается создать копию с теми же данными
Чего то я в файле этого не увидел :(
[vba]
Код
Public Sub www()
      Sheets("Альфа").Copy after:=Sheets(Sheets.Count)
      ActiveSheet.[b6] = ActiveSheet.[b6] + 1
End Sub
[/vba]

Автор - KuklP
Дата добавления - 17.08.2013 в 16:57
Алсу Дата: Понедельник, 19.08.2013, 08:43 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
KuklP, я не сохранила просто свой макрос, он бесполезен)
[vba]
Код
Public Sub www()
Sheets("Альфа").Copy after:=Sheets(Sheets.Count)
ActiveSheet.[b6] = ActiveSheet.[b6] + 1
End Sub
[/vba]


Спасибо, но это немного не то,
здесь к значению в ячейке прибавляется единица,
это не порядковый номер, а регистрационный, в листе со значениями (Статистика, колонка С) они идут не по порядку (там порядок в другом). Сори, что забыла про лист со значениями подробнее написать..
так вот эти номера нужно воспринимать именно как отдельный значения) как текст.
на каждом листе должен вставляться каждый следующий.. вот с этим-то у меня и проблема =/
 
Ответить
СообщениеKuklP, я не сохранила просто свой макрос, он бесполезен)
[vba]
Код
Public Sub www()
Sheets("Альфа").Copy after:=Sheets(Sheets.Count)
ActiveSheet.[b6] = ActiveSheet.[b6] + 1
End Sub
[/vba]


Спасибо, но это немного не то,
здесь к значению в ячейке прибавляется единица,
это не порядковый номер, а регистрационный, в листе со значениями (Статистика, колонка С) они идут не по порядку (там порядок в другом). Сори, что забыла про лист со значениями подробнее написать..
так вот эти номера нужно воспринимать именно как отдельный значения) как текст.
на каждом листе должен вставляться каждый следующий.. вот с этим-то у меня и проблема =/

Автор - Алсу
Дата добавления - 19.08.2013 в 08:43
KuklP Дата: Понедельник, 19.08.2013, 09:25 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Ну, если еще чего забыла, больше переделывать не буду.
[vba]
Код
Public Sub www()
      Dim a, i&
      With Sheets("Статистика")
          a = .Range("c4:c" & .Cells(.Rows.Count, 3).End(xlUp).Row).Value
      End With
      For i = 1 To UBound(a)
          If a(i, 1) <> "" Then
              Sheets("Альфа").Copy after:=Sheets(Sheets.Count)
              ActiveSheet.[b6] = CStr(a(i, 1))
          End If
      Next
End Sub
[/vba]
К сообщению приложен файл: 8979578.rar (39.9 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 19.08.2013, 09:33
 
Ответить
СообщениеНу, если еще чего забыла, больше переделывать не буду.
[vba]
Код
Public Sub www()
      Dim a, i&
      With Sheets("Статистика")
          a = .Range("c4:c" & .Cells(.Rows.Count, 3).End(xlUp).Row).Value
      End With
      For i = 1 To UBound(a)
          If a(i, 1) <> "" Then
              Sheets("Альфа").Copy after:=Sheets(Sheets.Count)
              ActiveSheet.[b6] = CStr(a(i, 1))
          End If
      Next
End Sub
[/vba]

Автор - KuklP
Дата добавления - 19.08.2013 в 09:25
Алсу Дата: Понедельник, 19.08.2013, 10:56 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
KuklP, попробовала, спасибо, это именно то, что нужно! hands ^_^
Ошибку со значениями (про более 255 символов) исправила, теперь дает ошибку "метод copy из класса worksheet завершен неверно".. и не копирует до конца списка, только первые 35 штук.. Скажите, т.е. 35 это предел? хотела, чтобы все в одном файле было, но видимо придется делать несколько =/
К сообщению приложен файл: 5071389.rar (37.8 Kb)


Сообщение отредактировал Алсу - Понедельник, 19.08.2013, 10:58
 
Ответить
СообщениеKuklP, попробовала, спасибо, это именно то, что нужно! hands ^_^
Ошибку со значениями (про более 255 символов) исправила, теперь дает ошибку "метод copy из класса worksheet завершен неверно".. и не копирует до конца списка, только первые 35 штук.. Скажите, т.е. 35 это предел? хотела, чтобы все в одном файле было, но видимо придется делать несколько =/

Автор - Алсу
Дата добавления - 19.08.2013 в 10:56
KuklP Дата: Понедельник, 19.08.2013, 11:58 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
В 2007 отработал без проблем. И без ограничения в 255 символов.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВ 2007 отработал без проблем. И без ограничения в 255 символов.

Автор - KuklP
Дата добавления - 19.08.2013 в 11:58
Алсу Дата: Понедельник, 19.08.2013, 12:04 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
KuklP, понятно, ну значит пора требовать обновления ПО :)
Спасибо еще раз огромное за помощь! respect
 
Ответить
СообщениеKuklP, понятно, ну значит пора требовать обновления ПО :)
Спасибо еще раз огромное за помощь! respect

Автор - Алсу
Дата добавления - 19.08.2013 в 12:04
KuklP Дата: Понедельник, 19.08.2013, 13:25 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Без танцев с бубнами в 2003 не обошлось:

Отрабатывает один раз. Чтоб запустить повторно, надо удалить созданные листы, сохранить книгу и перезапустить Эксель.
К сообщению приложен файл: 6396446.rar (41.5 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 19.08.2013, 13:26
 
Ответить
СообщениеБез танцев с бубнами в 2003 не обошлось:

Отрабатывает один раз. Чтоб запустить повторно, надо удалить созданные листы, сохранить книгу и перезапустить Эксель.

Автор - KuklP
Дата добавления - 19.08.2013 в 13:25
Алсу Дата: Понедельник, 19.08.2013, 14:34 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
KuklP, листы создает все, но все с одинаковым регномером в ячейке B6.
 
Ответить
СообщениеKuklP, листы создает все, но все с одинаковым регномером в ячейке B6.

Автор - Алсу
Дата добавления - 19.08.2013 в 14:34
KuklP Дата: Понедельник, 19.08.2013, 14:47 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Гы) Про слона-то я и забыл deal
К сообщению приложен файл: 0084914.rar (41.6 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеГы) Про слона-то я и забыл deal

Автор - KuklP
Дата добавления - 19.08.2013 в 14:47
Алсу Дата: Понедельник, 19.08.2013, 15:27 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
KuklP, теперь правильно работает, но листы не все))..
Я в принципе проблему уже решила - часть таблицы вырезала в другой файл, макрос выполнялся частями) все, что нужно было, я получила.
Спасибо Вам большое за неравнодушие к проблеме)
 
Ответить
СообщениеKuklP, теперь правильно работает, но листы не все))..
Я в принципе проблему уже решила - часть таблицы вырезала в другой файл, макрос выполнялся частями) все, что нужно было, я получила.
Спасибо Вам большое за неравнодушие к проблеме)

Автор - Алсу
Дата добавления - 19.08.2013 в 15:27
SM Дата: Понедельник, 19.08.2013, 15:35 | Сообщение № 14
Группа: Друзья
Ранг: Участник
Сообщений: 64
Репутация: 59 ±
Замечаний: 0% ±

2003
also:
[vba]
Код
Sub www()
      Dim A(), Item, Sh1 As Worksheet, Sh2 As Worksheet
      '
      With Sheets("Статистика")
          A = .Range("C4:C" & .Cells(.Rows.Count, "C").End(xlUp).Row).Value
      End With
      Set Sh1 = Sheets("Альфа")
      Set Sh2 = Sh1
      Application.ScreenUpdating = False
      For Each Item In A
          Item = Trim(CStr(Item))
          If Item <> "" Then
              Set Sh2 = Worksheets.Add(, Sh2)
              Sh2.Name = "Рег.№ " & Item
              Sh1.Cells.Copy Sh2.Cells
              Sh2.Range("B6").Value = Item
          End If
      Next
      Application.ScreenUpdating = True
End Sub
[/vba]


Excel изощрён, но не злонамерен

Сообщение отредактировал SM - Понедельник, 19.08.2013, 15:36
 
Ответить
Сообщениеalso:
[vba]
Код
Sub www()
      Dim A(), Item, Sh1 As Worksheet, Sh2 As Worksheet
      '
      With Sheets("Статистика")
          A = .Range("C4:C" & .Cells(.Rows.Count, "C").End(xlUp).Row).Value
      End With
      Set Sh1 = Sheets("Альфа")
      Set Sh2 = Sh1
      Application.ScreenUpdating = False
      For Each Item In A
          Item = Trim(CStr(Item))
          If Item <> "" Then
              Set Sh2 = Worksheets.Add(, Sh2)
              Sh2.Name = "Рег.№ " & Item
              Sh1.Cells.Copy Sh2.Cells
              Sh2.Range("B6").Value = Item
          End If
      Next
      Application.ScreenUpdating = True
End Sub
[/vba]

Автор - SM
Дата добавления - 19.08.2013 в 15:35
KuklP Дата: Понедельник, 19.08.2013, 15:36 | Сообщение № 15
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
но листы не все
Как так? Только что запустил, создались все листы. См. скрин.

К сообщению приложен файл: 0711674.gif (82.5 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
но листы не все
Как так? Только что запустил, создались все листы. См. скрин.


Автор - KuklP
Дата добавления - 19.08.2013 в 15:36
Алсу Дата: Понедельник, 19.08.2013, 18:15 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
KuklP, хм, странно, теперь все выходят. видимо глюк какой-то был. получалось где то около 10 листов. сейчас нормально работает)
 
Ответить
СообщениеKuklP, хм, странно, теперь все выходят. видимо глюк какой-то был. получалось где то около 10 листов. сейчас нормально работает)

Автор - Алсу
Дата добавления - 19.08.2013 в 18:15
KuklP Дата: Понедельник, 19.08.2013, 18:34 | Сообщение № 17
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Сашин(SM) вариант лучше :)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 19.08.2013, 18:46
 
Ответить
СообщениеСашин(SM) вариант лучше :)

Автор - KuklP
Дата добавления - 19.08.2013 в 18:34
Medvedev_AV Дата: Суббота, 29.03.2014, 22:05 | Сообщение № 18
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Приветствую всех.

Вопрос по коду SM в сообщении №14

Как сделать так, чтобы имя листу назначалось не по значению Item
Sh2.Name = "Рег.№ " & Item
а бралось из соседней ячейки, например находящейся справа?

Самостоятельно разобраться и изменить код пока не получилось... KuklP,
 
Ответить
СообщениеПриветствую всех.

Вопрос по коду SM в сообщении №14

Как сделать так, чтобы имя листу назначалось не по значению Item
Sh2.Name = "Рег.№ " & Item
а бралось из соседней ячейки, например находящейся справа?

Самостоятельно разобраться и изменить код пока не получилось... KuklP,

Автор - Medvedev_AV
Дата добавления - 29.03.2014 в 22:05
ShAM Дата: Воскресенье, 30.03.2014, 01:51 | Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Так, вроде, работает:
[vba]
Код
Sub www()
     Dim j As Long, Sh1 As Worksheet, Sh2 As Worksheet
With Sheets("Статистика")
     Set Sh1 = Sheets("Альфа")
     Set Sh2 = Sh1
     Application.ScreenUpdating = False
     For j = 4 To .Cells(.Rows.Count, "C").End(xlUp).Row
         If .Cells(j, 3).Value <> "" Then
             Set Sh2 = Worksheets.Add(, Sh2)
             Sh2.Name = .Cells(j, 4).Value
             Sh1.Cells.Copy Sh2.Cells
             Sh2.Range("B6").Value = .Cells(j, 3).Value
         End If
     Next
     Application.ScreenUpdating = True
End With
End Sub
[/vba]
К сообщению приложен файл: 2102974.zip (53.9 Kb)
 
Ответить
СообщениеТак, вроде, работает:
[vba]
Код
Sub www()
     Dim j As Long, Sh1 As Worksheet, Sh2 As Worksheet
With Sheets("Статистика")
     Set Sh1 = Sheets("Альфа")
     Set Sh2 = Sh1
     Application.ScreenUpdating = False
     For j = 4 To .Cells(.Rows.Count, "C").End(xlUp).Row
         If .Cells(j, 3).Value <> "" Then
             Set Sh2 = Worksheets.Add(, Sh2)
             Sh2.Name = .Cells(j, 4).Value
             Sh1.Cells.Copy Sh2.Cells
             Sh2.Range("B6").Value = .Cells(j, 3).Value
         End If
     Next
     Application.ScreenUpdating = True
End With
End Sub
[/vba]

Автор - ShAM
Дата добавления - 30.03.2014 в 01:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать лист с изменением значения в 1 ячейке (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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