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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос выдаёт ошибку 1004 - Мир MS Excel

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

Excel 2016
Во вложении файл с макросом на открытие книги. Код:

[vba]
Код
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Dim wsSh As Object
    For Each wsSh In Me.Sheets
        If wsSh.Name = "Прочее" Then GoTo b
        If wsSh.Name = "Цель кредита" Then GoTo b
        wsSh.EnableOutlining = True
        If wsSh.Name = "Консолидация" Then GoTo a
        wsSh.Protect Password:="0000", DrawingObjects:=True, Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, AllowFormattingRows:=True, AllowFiltering:=True
        GoTo b
a:
        wsSh.Protect Password:="0000", DrawingObjects:=False, Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, AllowFormattingRows:=True, AllowAutoFiltering:=True
b:
    Next wsSh
    Application.ScreenUpdating = True
    Application.CellDragAndDrop = False
End Sub
[/vba]

Выдаёт ошибку 1004 на строке после a:

Подскажите, пожалуйста, в чём причина. Задача: заблокировать все листы кроме двух, а на одном из заблокированных оставить возможность редактирования объектов
К сообщению приложен файл: 5048973.xls (37.5 Kb)
 
Ответить
СообщениеВо вложении файл с макросом на открытие книги. Код:

[vba]
Код
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Dim wsSh As Object
    For Each wsSh In Me.Sheets
        If wsSh.Name = "Прочее" Then GoTo b
        If wsSh.Name = "Цель кредита" Then GoTo b
        wsSh.EnableOutlining = True
        If wsSh.Name = "Консолидация" Then GoTo a
        wsSh.Protect Password:="0000", DrawingObjects:=True, Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, AllowFormattingRows:=True, AllowFiltering:=True
        GoTo b
a:
        wsSh.Protect Password:="0000", DrawingObjects:=False, Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, AllowFormattingRows:=True, AllowAutoFiltering:=True
b:
    Next wsSh
    Application.ScreenUpdating = True
    Application.CellDragAndDrop = False
End Sub
[/vba]

Выдаёт ошибку 1004 на строке после a:

Подскажите, пожалуйста, в чём причина. Задача: заблокировать все листы кроме двух, а на одном из заблокированных оставить возможность редактирования объектов

Автор - Almost
Дата добавления - 11.11.2015 в 22:01
Pelena Дата: Среда, 11.11.2015, 22:17 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19197
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Замените [vba]
Код
Dim wsSh As Object
[/vba] на [vba]
Код
Dim wsSh As Worksheet
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗамените [vba]
Код
Dim wsSh As Object
[/vba] на [vba]
Код
Dim wsSh As Worksheet
[/vba]

Автор - Pelena
Дата добавления - 11.11.2015 в 22:17
_Boroda_ Дата: Среда, 11.11.2015, 22:18 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Goto - это не по феншую.
Попробуйте вот так
[vba]
Код
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Dim wsSh As Worksheet
    For Each wsSh In Me.Sheets
        If wsSh.Name <> "Прочее" And wsSh.Name <> "Цель кредита" Then
            wsSh.EnableOutlining = True
            DO_ = True
            If wsSh.Name = "Консолидация" Then DO_ = False
            wsSh.Protect Password:="0000", DrawingObjects:=DO_, Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, AllowFormattingRows:=True, AllowFiltering:=True
        End If
    Next wsSh
    Application.ScreenUpdating = True
    Application.CellDragAndDrop = False
End Sub
[/vba]
На всякий случай (вдруг кто не в курсе) предупрежу, что последняя строчка макроса отключает маркер заполнения/перетаскивания. Кто уже запустил макрос из первого поста - запустите отдельно вот это и все станет на место
[vba]
Код
Application.CellDragAndDrop = True
[/vba]
Да, и действительно - Worksheet. Поправил у себя, сразу не заметил.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеGoto - это не по феншую.
Попробуйте вот так
[vba]
Код
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Dim wsSh As Worksheet
    For Each wsSh In Me.Sheets
        If wsSh.Name <> "Прочее" And wsSh.Name <> "Цель кредита" Then
            wsSh.EnableOutlining = True
            DO_ = True
            If wsSh.Name = "Консолидация" Then DO_ = False
            wsSh.Protect Password:="0000", DrawingObjects:=DO_, Contents:=True, Scenarios:=True, UserinterfaceOnly:=True, AllowFormattingRows:=True, AllowFiltering:=True
        End If
    Next wsSh
    Application.ScreenUpdating = True
    Application.CellDragAndDrop = False
End Sub
[/vba]
На всякий случай (вдруг кто не в курсе) предупрежу, что последняя строчка макроса отключает маркер заполнения/перетаскивания. Кто уже запустил макрос из первого поста - запустите отдельно вот это и все станет на место
[vba]
Код
Application.CellDragAndDrop = True
[/vba]
Да, и действительно - Worksheet. Поправил у себя, сразу не заметил.

Автор - _Boroda_
Дата добавления - 11.11.2015 в 22:18
Almost Дата: Среда, 11.11.2015, 22:44 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Спасибо, идеально! Заодно добавил предложенную строчку для восстановления перетаскивания в свой файл на событие закрытия книги.
 
Ответить
СообщениеСпасибо, идеально! Заодно добавил предложенную строчку для восстановления перетаскивания в свой файл на событие закрытия книги.

Автор - Almost
Дата добавления - 11.11.2015 в 22:44
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос выдаёт ошибку 1004 (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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