Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Дорогие форумчане!

Искренне хочу поблагодарить каждого участника нашей дискуссии! Благодаря коллаборации общих усилий, нам наконец-таки удалось запустить мою "программку" в Excel 2016 и 2013!

Ниже хочу выделить предложения следующих пользователей, которые в купе решили вопрос:

Юрий М вышел на Skype конференцию и совместно со мной протестировал файл на его Office 2013! Нам удалось выяснить, что даже когда Excel самостоятельно снимает защиту структуры книги, возможна ошибка, когда некоторые вкладки не видят, что защита снята.
РЕШЕНИЕ: не блокировать структуру книги, если ты работаешь со свойством скрытности вкладок через макрос.
П.С.: был решен вопрос с адаптацией к Office 2013, однако в Office 2016 продолжилась ошибка.

В Office 2016 Excel ругался, что не может присвоить свойство Hidden для 4 листов (из 60). Я их и переименовывал, и создал новые такие-же и удалил старые - все равно он ругался на именно эти 4 листа. Рабочее решение в моем случае предложил Alemox! (Nordheim был как никогда близок в своем предложении решения вопроса.)
РЕШЕНИЕ: если Excel не любит, как ты в коде обращаешься к переменной, найди другие слова.
Пример:
Не работает: (мой код)
Код
If Sheets("Info С").Range("E47") = "1" ThenSheets("1").Visible = True
Else
Sheets("1").Visible = False
End If
Не работает: (код Nordheim)
Код
With Sheets("Info С")        
If .[E47].Value = "1" Then .Visible = xlSheetVisible Else .Visible = xlSheetHidden
End With
Работает!!!: (код Alemox)
Код
With Лист1
    If Лист2.Cells(45, 5) = "1" Then
        .Visible = xlSheetVisible
    Else
        .Visible = xlSheetHidden
    End If
End With

И так, мы убрали защиту структуры книги полностью и переписали проблемные части кода на другой лад. Нажимаем на кнопку, к которой привязан большой макрос, и.. На Office 365 все ок, а Office 2013 и 2016 вылетают  :evil:  .
РЕШЕНИЕ: снести нафиг все кнопки, реализовать их через выпадающий список ячейки (On/Off) и условное форматирование.



И наконец - мой вопрос решен, за что еще раз хочу сказать большое спасибо каждому, кто принял участие в решении моего вопроса!!!

Также я сделал для себя несколько важных умозаключений:
1. Вовремя выполняй просьбы админа, иначе vikttur закроет твой вопрос и ты никогда не узнаешь своего решения  :D
2. Вместе - мы сила! Поэтому, я теперь также буду временами появляться на форуме и помогать другим с решением их вопросов.
3. Если Вам нужно разработать среднее или сложное приложение на большое количество компьютеров с разнашерстным Office - задумайтесь о создании универсального WEB приложения  :D

Еще раз ВСЕМ спасибо! Желаю безошибочного исполнения всех макросов!!
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Дмитрий(The_Prist) Щербаков текст ошибки тот же:
Run time error '-2147417848 (80010108)':
Method 'visible' of project '_Worksheet' failed
Цитата
Имейте ввиду, если в книге для скрытия листа остается только один видимый лист, то его уже нельзя скрыть.

Знаю данную особенность, в книге всегда не затрагивается 1 лист.

Дмитрий(The_Prist) Щербаков у Вас случайно нет Office 2016 - 2013, чтобы глянуть?
Я был бы очень признателен :))
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Спасибо, что помогаете мне разобраться с вопросом!

И так, что я успел проверить:
Это не глюк листа - я пересоздал листы заново - проблема остается
Я использовал предложения по написанию кода выше от Nordheim и Дмитрий(The_Prist) Щербаков, на моем office 365 работает все ок, на office 2016 опять через раз выдает ошибку уже на данном абзаце:
Код
With ThisWorkbook.Sheets("Зак")
        If ThisWorkbook.Sheets("Info С").[E45].Value = "1" Then .Visible = xlSheetVisible Else .Visible = xlSheetHidden
    End With
Ігор Гончаренко, согласен, что пока код работающий назвать нельзя.

Дорогие форумчане, подскажите пожалуйста, в чем может быть еще дело?
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Код
Sub beforeprintPP()
'powerpoint sheets


If Sheets("Go!").Cells(6, 57).Value = "On" Then

If Sheets("Go!").Range("E35") = "1" Then
Sheets("II").Visible = True
Else
End If


If Sheets("Go!").Range("E36") = "1" Then
Sheets("ll").Visible = True
Else
End If

If Sheets("Go!").Cells(8, 57).Value = "On" Then
If Sheets("Go!").Range("E38") = "1" Then
Sheets("П-1").Visible = True
Else
End If
Else
End If

If Sheets("Go!").Cells(10, 57).Value = "On" Then
If Sheets("Go!").Range("E39") = "1" Then
Sheets("П-2").Visible = True
Else
End If
Else
End If

If Sheets("Go!").Range("E43") = "1" Then
Sheets("Serv").Visible = True
Else
End If

If Sheets("Go!").Range("E44") = "1" Then
Sheets("Sеrv").Visible = True
Else
End If

If Sheets("Go!").Range("E47") = "1" Then
Sheets("SL").Visible = True
Else
End If

If Sheets("Go!").Range("E48") = "1" Then
Sheets("SyL").Visible = True
Else
End If

If Sheets("Go!").Range("E56") = "1" Then
Sheets("AFH").Visible = True
Else
End If

If Sheets("Go!").Range("E57") = "1" Then
Sheets("АFH").Visible = True
Else
End If

If Sheets("Go!").Range("E60") = "1" Then
If Sheets("Info М").Range("T30") = "1" Then
Sheets("Зак М").Visible = True
Else
End If
Else
End If

If Sheets("Go!").Range("AE35") = "1" Then
Sheets("$").Visible = True
Else
End If

If Sheets("Go!").Range("AE42") = "1" Then
Sheets("TOC2").Visible = True
Else
End If



Else
End If


End Sub
Часто ошибка появляется на II (две буквы i) или ll (две буквы LL)
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Проблема в том, что макрос абсолютно исправен. Работает без нареканий в новой office 365. Но при запуске в Office 2016 и младше, работает через раз: то не видит лист, который нужно скрыть, то все ок.
Поэтому, мне очень нужна помощь участника форума с иным Excel (не 365), чтобы он просмотрел и нашел решение.

Макрос работает в Office 365, а в Excel 2016 работает через раз: то спокойно скрывает нужную строку, то ее не может скрыть и выдает ошибку.
При этом код большой, я предполагаю, что какая-нибудь внутренняя ошибка исполнения.

Если кто-нибудь попробует открыть файл - думаю, встанет все на свои места :)

Помогите люди добрые :)
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Я не смог подгрузить файл, так как он весит 3,4 мб. Может быть у Вас получится его глянуть? Могу дать управление в Skype или отправить файл на почту.
Может быть есть какие-нибудь идеи, с чем это может быть связано?
Периодическая ошибка при обращении к листу из VBA, исправный код работает через раз. Office 365, 2016, 2013
 
Добрый день! Буду очень рад, если поможете мне решить вопрос. День уже потерял :(

Имеется исправный код, спокойно отрабатывающийся в моем Office 365. Код большой - 1500 строк, но элементарный. Например:
Код
If Sheets("Info С").Range("E47") = "1" Then
Sheets("1").Visible = True
Else
Sheets("1").Visible = False
End If
У всех моих коллег установлены Office 2016 (редко 2013).

Когда запускаешь файл у них, сначала выдает ошибку на ровном месте: не может скрыть существующий лист или скрыть столбик диаграммы
На второе исполнение макроса - все работает. И так по кругу.

С чем это может быть связано? Как преодолеть данную проблему?
Страницы: 1
Наверх