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

Вход

Регистрация

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

 

= Мир MS Excel/коректировать код VBA - Мир MS Excel

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

Excel 2007
Здравствуйте! Нужна помощ. Как модифицировать код чтоб она работала на все листы и не зависила он найменовании конкретного листа? Листов очень много. Заранее благодарен! :)
К сообщению приложен файл: testcopy.xlsm (17.1 Kb)
 
Ответить
СообщениеЗдравствуйте! Нужна помощ. Как модифицировать код чтоб она работала на все листы и не зависила он найменовании конкретного листа? Листов очень много. Заранее благодарен! :)

Автор - vatnat
Дата добавления - 14.08.2013 в 21:32
Hugo Дата: Среда, 14.08.2013, 21:39 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
[vba]
Код
Set ws1 = ActiveSheet: Set ws2 = Worksheets(ws1.Index + 1)
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[vba]
Код
Set ws1 = ActiveSheet: Set ws2 = Worksheets(ws1.Index + 1)
[/vba]

Автор - Hugo
Дата добавления - 14.08.2013 в 21:39
vatnat Дата: Среда, 14.08.2013, 21:46 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, так получается что информацию берет только из одного листа, нужно чтоб со всех листов собирал в одном.
 
Ответить
СообщениеHugo, так получается что информацию берет только из одного листа, нужно чтоб со всех листов собирал в одном.

Автор - vatnat
Дата добавления - 14.08.2013 в 21:46
Hugo Дата: Среда, 14.08.2013, 21:53 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
В каком?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеВ каком?

Автор - Hugo
Дата добавления - 14.08.2013 в 21:53
vatnat Дата: Среда, 14.08.2013, 21:55 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, если возможно, чтоб в конце создался новый лист и внем все копировалась.
 
Ответить
СообщениеHugo, если возможно, чтоб в конце создался новый лист и внем все копировалась.

Автор - vatnat
Дата добавления - 14.08.2013 в 21:55
Hugo Дата: Среда, 14.08.2013, 22:05 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
[vba]
Код
Option Explicit

Sub Copy()
     Dim i As Long, ws1 As Worksheet, ws2 As Worksheet
     On Error GoTo Err_Execute
     'Start at A1
     Application.ScreenUpdating = False

     Set ws2 = Worksheets.Add(after:=Worksheets(Sheets.Count))
     For Each ws1 In Worksheets
         If ws1.Index <> Sheets.Count Then
             For i = 1 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
                 If ws1.Range("A" & i).Interior.Color = 65535 Then    'you said yellow in your example
                     ws1.Range("A" & i).EntireRow.Copy
                     ws2.Range("A" & ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                    False, Transpose:=False
                 End If
             Next
         End If
     Next

     ws2.Range("A1") = "Results"
     Application.ScreenUpdating = True
     MsgBox "The data has been successfully copied."
     On Error GoTo 0
     Exit Sub
Err_Execute:
     MsgBox "An error occurred. Error number " & Err.Number & " - " & Err.Description
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[vba]
Код
Option Explicit

Sub Copy()
     Dim i As Long, ws1 As Worksheet, ws2 As Worksheet
     On Error GoTo Err_Execute
     'Start at A1
     Application.ScreenUpdating = False

     Set ws2 = Worksheets.Add(after:=Worksheets(Sheets.Count))
     For Each ws1 In Worksheets
         If ws1.Index <> Sheets.Count Then
             For i = 1 To ws1.Cells(Rows.Count, "A").End(xlUp).Row
                 If ws1.Range("A" & i).Interior.Color = 65535 Then    'you said yellow in your example
                     ws1.Range("A" & i).EntireRow.Copy
                     ws2.Range("A" & ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                    False, Transpose:=False
                 End If
             Next
         End If
     Next

     ws2.Range("A1") = "Results"
     Application.ScreenUpdating = True
     MsgBox "The data has been successfully copied."
     On Error GoTo 0
     Exit Sub
Err_Execute:
     MsgBox "An error occurred. Error number " & Err.Number & " - " & Err.Description
End Sub
[/vba]

Автор - Hugo
Дата добавления - 14.08.2013 в 22:05
vatnat Дата: Среда, 14.08.2013, 22:07 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Hugo, СПАСИБО огромное. yes
 
Ответить
СообщениеHugo, СПАСИБО огромное. yes

Автор - vatnat
Дата добавления - 14.08.2013 в 22:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » коректировать код VBA (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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