Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2011, 13:29   #1
Александр 33
Пользователь
 
Регистрация: 02.01.2011
Сообщений: 10
Вопрос Как в этом макросе указать , что-бы было название каждого листа и книги ,при сборе всех листов на один ?

Уважаемые форумчане , подскажите пожалуйста , как в этом макросе
сделать так , что-бы
Перед, каждыми собранными данными с одного листа в начале на строку выше, что-бы было написано название с какого листа эти данные к примеру (Лист 1, и т.д ) , на общем листе ("полный список")

Sub korobka()
Dim Ws As Worksheet
Dim LastRow As Long
Dim iLastRow As Long
Dim Rng As Range
Application.DisplayAlerts = False
Application.ScreenUpdating = False
If Sheets(Sheets.Count).Name = "Полный_список" Then Sheets(Sheets.Count).Delete
Sheets(1).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Полный_список"
Set Rng = ActiveSheet.UsedRange
Rng.Clear
For i = 1 To Sheets.Count - 1
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
With Sheets(i)
iLastRow = .Cells(Rows.Count, 2).End(xlUp).Row
Range(.Cells(1, 1), .Cells(iLastRow, 3)).Copy Cells(LastRow + 2, 1)
Range(.Cells(1, 6), .Cells(iLastRow, 9)).Copy Cells(LastRow + 2, 5)
End With
Next
Rows(1).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Александр 33 вне форума Ответить с цитированием
Старый 06.01.2011, 14:06   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

...
For i = 1 To Sheets.Count - 1
LastRow = Cells(Rows.Count, 2).End(xlUp).Row
cells(lastrow,1) = sheets(i).name
lastrow = lastrow+1

With Sheets(i)
...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.01.2011, 14:22   #3
Александр 33
Пользователь
 
Регистрация: 02.01.2011
Сообщений: 10
Хорошо

Большое спасибо IgorGO !!! Это второй сайт , на котором я задал этот вопрос и только вы смогли ответить , так быстро . Настоящий Профессионал !!!
Александр 33 вне форума Ответить с цитированием
Старый 06.01.2011, 14:54   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Ну раз Вы так...
Код:
If Sheets(Sheets.Count).Name = "Полный_список" Then Sheets(Sheets.Count).Delete
Sheets(1).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Полный_список"
Set Rng = ActiveSheet.UsedRange
Rng.Clear
этот фрагмент кода вызвал недоумение: зачем удалять "Полный_список" чтобы тут же вставить лист с таким же именем и на то же место? Возможно в этом есть какой-то глубинный смысл, которого я не знаю, но я бы переписал этот кусок так:
Код:
If Sheets(Sheets.Count).Name = "Полный_список" Then 
  Sheets(Sheets.Count).activate
else
  Sheets(1).Copy After:=Sheets(Sheets.Count)
  Sheets(Sheets.Count).Name = "Полный_список"
end if
ActiveSheet.UsedRange.Clear
и обьяление Dim Rng As Range можно снести - Rng не используется нигде.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.01.2011, 15:29   #5
Александр 33
Пользователь
 
Регистрация: 02.01.2011
Сообщений: 10
Вопрос

IgorGO , всё отлично я сделал , что вы мне подсказали . Только я не знаю , как сделать , что-бы название листа , которое вставляется ,не удаляла нижнюю ячейку со значением , а вставлялась где нибудь на не занятой ячейке ? Прошу Извинений , что раньше это не написал .
Александр 33 вне форума Ответить с цитированием
Старый 06.01.2011, 15:36   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

...
For i = 1 To Sheets.Count - 1
LastRow = Cells(Rows.Count, 2).End(xlUp).Row + 1
cells(lastrow,1) = sheets(i).name
lastrow = lastrow+1
With Sheets(i)
...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.01.2011, 17:41   #7
Александр 33
Пользователь
 
Регистрация: 02.01.2011
Сообщений: 10
Хорошо

IgorGO всё Прекрасно получилось с Вашей помощью !!! С меня будет маленькая благодарность , по Webmoney !!!

Вот код :

Sub superkorobka()
Dim Ws As Worksheet
Dim LastRow As Long
Dim iLastRow As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
If Sheets(Sheets.Count).Name = "Полный_список" Then
Sheets(Sheets.Count).Activate
Else
Sheets(1).Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Полный_список"
End If
ActiveSheet.UsedRange.Clear
For i = 1 To Sheets.Count - 1
LastRow = Cells(Rows.Count, 2).End(xlUp).row + 1
Cells(LastRow, 1) = Sheets(i).Name
LastRow = LastRow + 1
With Sheets(i)
iLastRow = .Cells(Rows.Count, 2).End(xlUp).row
Range(.Cells(1, 1), .Cells(iLastRow, 3)).Copy Cells(LastRow + 2, 1)
Range(.Cells(1, 6), .Cells(iLastRow, 9)).Copy Cells(LastRow + 2, 5)

End With
Next
Rows(1).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Александр 33 вне форума Ответить с цитированием
Старый 06.01.2011, 18:14   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

и я рад за Вас!
Александр, обращайтесь.

С Рождеством!!!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.01.2011, 18:38   #9
Александр 33
Пользователь
 
Регистрация: 02.01.2011
Сообщений: 10
По умолчанию

Большое спасибо и вас поздравляю , с Рождеством !!!
Александр 33 вне форума Ответить с цитированием
Старый 06.01.2011, 18:40   #10
Александр 33
Пользователь
 
Регистрация: 02.01.2011
Сообщений: 10
По умолчанию

Вернее будет , Вас , поздравляю с Рождеством !!!
Александр 33 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в один лист можно собрать данные с других листов Lis000iq Microsoft Office Excel 12 24.08.2015 12:51
Как создать кнопку для всех листов книги? kipish_lp Microsoft Office Excel 5 06.05.2010 17:43
снятие пароля с книги/листа из другой книги? Bezdar Microsoft Office Excel 3 25.12.2008 11:59
вставить в CheckBox на форме название только тех листов книги, которые помечены определенным символом? Bezdar Microsoft Office Excel 4 23.07.2008 15:30