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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос переноса значений всех страниц кроме одной - Мир MS Excel

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

Excel 2016
Здравствуйте, есть макрос для переноса всех значений страниц, на отдельную страницу, можно как то его дополнить чтобы он не трогал страницу "общий"
[vba]
Код
Sub()
'
'
'

'
s_ = Sheets.Count
Sheets.Add After:=Sheets(s_)
For i = 1 To s_
    r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
    Sheets(i).Range("A2", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
    n_ = n_ + r_
Next
End Sub

[/vba]
К сообщению приложен файл: 1637079.xlsm (23.1 Kb)
 
Ответить
СообщениеЗдравствуйте, есть макрос для переноса всех значений страниц, на отдельную страницу, можно как то его дополнить чтобы он не трогал страницу "общий"
[vba]
Код
Sub()
'
'
'

'
s_ = Sheets.Count
Sheets.Add After:=Sheets(s_)
For i = 1 To s_
    r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
    Sheets(i).Range("A2", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
    n_ = n_ + r_
Next
End Sub

[/vba]

Автор - Zagit12
Дата добавления - 21.01.2019 в 16:34
vikttur Дата: Понедельник, 21.01.2019, 16:38 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

[vba]
Код
If Sheets(i).Name <> "общий" Then
[/vba]
 
Ответить
Сообщение[vba]
Код
If Sheets(i).Name <> "общий" Then
[/vba]

Автор - vikttur
Дата добавления - 21.01.2019 в 16:38
Zagit12 Дата: Понедельник, 21.01.2019, 16:42 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
If Sheets(i).Name <> "общий" Then

куда его воткнуть? везде ошибку выдает.
 
Ответить
Сообщение
If Sheets(i).Name <> "общий" Then

куда его воткнуть? везде ошибку выдает.

Автор - Zagit12
Дата добавления - 21.01.2019 в 16:42
vikttur Дата: Понедельник, 21.01.2019, 16:47 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Вы в цикле проверяете листы. Перед проверкой нужно узнать, стоит ли... И. естественно. не забыть закрыть оператор - End If
[vba]
Код
For i = 1 To s_
     If Sheets(i).Name <> "общий" Then
        r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
         Sheets(i).Range("A2", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
         n_ = n_ + r
     End If
Next
[/vba]
Если ошибка остается, показывайте в файле-примере
 
Ответить
СообщениеВы в цикле проверяете листы. Перед проверкой нужно узнать, стоит ли... И. естественно. не забыть закрыть оператор - End If
[vba]
Код
For i = 1 To s_
     If Sheets(i).Name <> "общий" Then
        r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
         Sheets(i).Range("A2", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
         n_ = n_ + r
     End If
Next
[/vba]
Если ошибка остается, показывайте в файле-примере

Автор - vikttur
Дата добавления - 21.01.2019 в 16:47
Zagit12 Дата: Понедельник, 21.01.2019, 16:52 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016

Если ошибка остается, показывайте в файле-примере

Теперь значения только одной страницы копируется.
К сообщению приложен файл: 3686088.xlsm (23.2 Kb)
 
Ответить
Сообщение

Если ошибка остается, показывайте в файле-примере

Теперь значения только одной страницы копируется.

Автор - Zagit12
Дата добавления - 21.01.2019 в 16:52
vikttur Дата: Понедельник, 21.01.2019, 17:09 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Очень полезно перед процедурами в модуле иметь Option Explicit и объявлять переменные
[vba]
Код
n_ = n_ + r
[/vba]
Посмотрите, что потеряли.
 
Ответить
СообщениеОчень полезно перед процедурами в модуле иметь Option Explicit и объявлять переменные
[vba]
Код
n_ = n_ + r
[/vba]
Посмотрите, что потеряли.

Автор - vikttur
Дата добавления - 21.01.2019 в 17:09
Zagit12 Дата: Понедельник, 21.01.2019, 17:13 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Очень полезно перед процедурами в модуле иметь Option Explicit и объявлять переменные

немного не понял, как его в коде объявить?
 
Ответить
Сообщение
Очень полезно перед процедурами в модуле иметь Option Explicit и объявлять переменные

немного не понял, как его в коде объявить?

Автор - Zagit12
Дата добавления - 21.01.2019 в 17:13
vikttur Дата: Понедельник, 21.01.2019, 17:24 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Цитата
немного не понял

А что из этого поняли "много"? :)

Добавить перед процедурой, на самом верху модуля.
Но этого мало. Нужно объявить все переменные.
Следующий быстрый вопрос "как?" не принимается - сначала ищете сами, потом вопрос на форум.

Цитата
Посмотрите, что потеряли.

Ошибку в строке нашли?


Сообщение отредактировал vikttur - Понедельник, 21.01.2019, 17:27
 
Ответить
Сообщение
Цитата
немного не понял

А что из этого поняли "много"? :)

Добавить перед процедурой, на самом верху модуля.
Но этого мало. Нужно объявить все переменные.
Следующий быстрый вопрос "как?" не принимается - сначала ищете сами, потом вопрос на форум.

Цитата
Посмотрите, что потеряли.

Ошибку в строке нашли?

Автор - vikttur
Дата добавления - 21.01.2019 в 17:24
Zagit12 Дата: Понедельник, 21.01.2019, 17:37 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
[vba]
Код
Sub ()
'
'
'

'
Dim s_, i, n_, r_
s_ = Sheets.Count
Sheets.Add After:=Sheets(s_)
For i = 1 To s_
    If Sheets(i).Name <> "îáùèé" Then
        r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
        Sheets(i).Range("A2", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
        n_ = n_ + r
    End If
    Next
End Sub
[/vba]
А что из этого поняли "много"?


Ошибка не знаю в чем, макрос и так себя выполнял нормально, только одну страницу надо исключить, может [vba]
Код
Application.ScreenUpdating = False
[/vba],
если не хотите помогать не надо, я к вам за помощью обратился а не за наставлением
 
Ответить
Сообщение[vba]
Код
Sub ()
'
'
'

'
Dim s_, i, n_, r_
s_ = Sheets.Count
Sheets.Add After:=Sheets(s_)
For i = 1 To s_
    If Sheets(i).Name <> "îáùèé" Then
        r_ = Sheets(i).Cells.SpecialCells(xlLastCell).Row
        Sheets(i).Range("A2", Sheets(i).Cells.SpecialCells(xlLastCell)).Copy Sheets(s_ + 1).Range("a" & n_ + 1)
        n_ = n_ + r
    End If
    Next
End Sub
[/vba]
А что из этого поняли "много"?


Ошибка не знаю в чем, макрос и так себя выполнял нормально, только одну страницу надо исключить, может [vba]
Код
Application.ScreenUpdating = False
[/vba],
если не хотите помогать не надо, я к вам за помощью обратился а не за наставлением

Автор - Zagit12
Дата добавления - 21.01.2019 в 17:37
vikttur Дата: Понедельник, 21.01.2019, 18:00 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Да я уже Вам показа! Нужно лишь внимательно смотреть.
Переменная r_ , а в показанной строке r - это совсем другая переменная, она всегда равна нулю.
 
Ответить
СообщениеДа я уже Вам показа! Нужно лишь внимательно смотреть.
Переменная r_ , а в показанной строке r - это совсем другая переменная, она всегда равна нулю.

Автор - vikttur
Дата добавления - 21.01.2019 в 18:00
Zagit12 Дата: Понедельник, 21.01.2019, 18:02 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 31
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо, заработало, и без объявления переменных
 
Ответить
СообщениеСпасибо, заработало, и без объявления переменных

Автор - Zagit12
Дата добавления - 21.01.2019 в 18:02
vikttur Дата: Понедельник, 21.01.2019, 18:59 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Конечно, работает.
Но без объявления и без Option Explicit Вы будете продолжать нарываться на похожие ошибки.


Сообщение отредактировал vikttur - Понедельник, 21.01.2019, 18:59
 
Ответить
СообщениеКонечно, работает.
Но без объявления и без Option Explicit Вы будете продолжать нарываться на похожие ошибки.

Автор - vikttur
Дата добавления - 21.01.2019 в 18:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос переноса значений всех страниц кроме одной (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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