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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2011, 19:50   #11
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Я дико извиняюсь! Курочил макрос очень уважаемого мною Сергея(SAS888) и совсем не обратил внимания на слово Private(а должен был, старею). Надо так:
Код:
Sub Main()
    Dim i As Integer, a()
    Application.ScreenUpdating = False: Cells.ClearContents
     a = Array("Лист1", "Лист2", "Лист4") ' преречисляете листы в нужном Вам порядке
    For i = 0 To UBound(a)
    Sheets(a(i)).UsedRange.Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
    Next
    Application.ScreenUpdating = true
End Sub
Теперь макрос будет виден по alt+8.
По поводу:"А можно ещё такой макрос. ..." я обязательно помогу Вам. Как только чуток освобожусь... Одно замечание - Вы напрасно обращаетесь к конкретному человеку в своих сообщениях. На форуме полно замечательных людей(Спецов!), готовых Вам помочь. Но когда Ваше обращение направлено к конкретному человеку... Я тоже, обычно прохожу мимо. В этот раз меня просто заинтересовало решение Сергея(SAS888, многому у него учусь).
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 25.02.2011 в 19:53.
kuklp вне форума Ответить с цитированием
Старый 26.02.2011, 15:07   #12
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

О вот это жизнь. Как вы ребята мне помогли.
Ещё последняя просьба. Есть два макроса, как бы их слепить в один?

Первый макрос

Sub Main1()
Dim i As Long, x As Range, sh As Worksheet: Application.ScreenUpdating = False
For Each sh In Sheets
For i = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
If sh.Cells(i, 1) <> "" Then
If sh.Cells(i, 1).Font.Color = vbRed Then
If sh.Cells(i + 1, 1).Font.Color = vbRed Then
If x Is Nothing Then Set x = sh.Cells(i, 1) Else Set x = Union(x, sh.Cells(i, 1))
Else
sh.Cells(i, 1).Copy sh.Cells(i, 1).Offset(, 1)
End If: End If: End If: Next
If Not x Is Nothing Then x.EntireRow.Delete
Set x = Nothing
Next
End Sub
А второй

Sub Main()
Dim i As Integer, a()
Application.ScreenUpdating = False: Cells.ClearContents
a = Array("Ëèñò1", "Ëèñò2", "Ëèñò3") ' ïðåðå÷èñëÿåòå ëèñòû â íóæíîì Âàì ïîðÿäêå
For i = 0 To UBound(a)
Sheets(a(i)).UsedRange.Copy Cells(Rows.Count, 1).End(xlUp).Offset(1)
Next
Application.ScreenUpdating = True
End Sub
Т.к. у меня "руки не стоят" не хочу испортить. За ранее благодарен.
Петро1 вне форума Ответить с цитированием
Старый 26.02.2011, 15:15   #13
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Так вызовите второй из первого:
Код:
Sub Main1()
Dim i As Long, x As Range, sh As Worksheet: Application.ScreenUpdating = False
For Each sh In Sheets
For i = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
If sh.Cells(i, 1) <> "" Then
If sh.Cells(i, 1).Font.Color = vbRed Then
If sh.Cells(i + 1, 1).Font.Color = vbRed Then
If x Is Nothing Then Set x = sh.Cells(i, 1) Else Set x = Union(x, sh.Cells(i, 1))
Else
sh.Cells(i, 1).Copy sh.Cells(i, 1).Offset(, 1)
End If: End If: End If: Next
If Not x Is Nothing Then x.EntireRow.Delete
Set x = Nothing
Next
call main
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 26.02.2011, 16:06   #14
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Я ж говорю у меня "руки не стоят", а тем более я не разобрался как закинуть макрос нечто в роде в "стандартные".Тоесть я буду код копировать каждый раз для новой книги, а я ето делаю каждый день несколько раз. Потому и прошу слепить 2 в 1, чтоб максимально упростить жизнь. Если можете то подскажите пожалуйста как это сделать.
Петро1 вне форума Ответить с цитированием
Старый 26.02.2011, 16:52   #15
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Не надо копировать. Включите макрорекордер. В выпадающем списке выберите пункт "в личной книге макросов" как на картинке. нажмите Ок и наберите в ячейке [a1] 23. Выключите рекордер. Теперь у Вас в редакторе ВБА появилось то, что на рис2. Туда скопируйте макрос из приложенного файла. Все. Оттуда его и запускайте.
Изображения
Тип файла: gif 2011-02-26_153855.gif (7.5 Кб, 38 просмотров)
Тип файла: gif 2011-02-26_154929.gif (11.0 Кб, 37 просмотров)
Вложения
Тип файла: rar Заготовка.rar (6.9 Кб, 9 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 26.02.2011, 23:49   #16
Петро1
Пользователь
 
Регистрация: 25.02.2011
Сообщений: 23
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Не надо копировать. Включите макрорекордер. В выпадающем списке выберите пункт "в личной книге макросов" как на картинке. нажмите Ок и наберите в ячейке [a1] 23. Выключите рекордер. Теперь у Вас в редакторе ВБА появилось то, что на рис2. Туда скопируйте макрос из приложенного файла. Все. Оттуда его и запускайте.

Уважаемые kuklp и SAS888 и другие учасники форума примного вам благодарен. Теперь жить (работать) стало раз 20 легче. Раньше я это всё вручную делал . Всё, теперь разобрался, программы работают отлично. Ещё раз спасибо.

kuklp а мы с вами земляки! Я тоже с Украины.
Петро1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Транспонирование множества данных из разных книгах или из разных листов на 1 лист посредством макроса Тантана Microsoft Office Excel 6 18.12.2014 13:04
выбока из разных листов таблицы isus Microsoft Office Excel 5 15.12.2010 13:26
Как копировать URL адрес из ячейки в другую ячейку (макросом). AlexDoom Помощь студентам 1 09.03.2009 10:59
Копировать значения ячеек макросом torus Microsoft Office Excel 1 09.11.2008 00:15
Копировать данные из разных ячеек по нескольким листам в один лист Dorvir Microsoft Office Excel 2 11.06.2008 10:10