Следующий код работает до тех пор, пока лист с кодовым названием Template не станет VeryHidden. Пожалуйста помоги!!

y = ActiveWorkbook.Worksheets.Count

namePrompt = InputBox("Enter a name for the new sheet", "Add Sheet")

If namePrompt = "" Then Exit Sub

Template.Copy after:=Worksheets(y - 1)

ActiveSheet.Name = namePrompt
0
user3462439 26 Мар 2014 в 07:35
Очень скрыто. Что это обозначает?
 – 
sam092
26 Мар 2014 в 09:43
- "очень скрытый" можно установить только с помощью кода или через панель свойств рабочего листа в VBEditor (варианты: xlSheeVisible, xlSheetHidden или xlSheetVeryHidden)
 – 
Tim Williams
26 Мар 2014 в 10:00
Спасибо, что сообщили мне :) Раньше я не знала об этом объекте размещения.
 – 
sam092
26 Мар 2014 в 12:46
Спасибо, Тим, за это предложение, оно обязательно сработает, если я покажу, скопирую, а затем снова скрою. Я надеялся, что пропустил какой-то синтаксис, потому что могу скопировать диапазон из очень скрытого листа, но не весь лист.
 – 
user3462439
26 Мар 2014 в 16:50

1 ответ

Лучший ответ

Вы можете проверить, является ли лист VeryHidden, и если да, вы можете показать его перед копированием ...

Sub Tester()

    Dim y, namePrompt, wasHidden

    y = ActiveWorkbook.Worksheets.Count

    namePrompt = InputBox("Enter a name for the new sheet", "Add Sheet")

    If namePrompt = "" Then Exit Sub

    Application.ScreenUpdating = False
    If Template.Visible = xlSheetVeryHidden Then
        Template.Visible = xlSheetVisible
        wasHidden = True
    End If

    Template.Copy after:=Worksheets(y - 1)

    ActiveSheet.Name = namePrompt

    If wasHidden Then Template.Visible = xlSheetVeryHidden

End Sub
0
Tim Williams 26 Мар 2014 в 09:59
Не уверен насчет vba, но уверены ли вы, что wasHidden было инициализировано как false, иначе у вас есть возможная ошибка.
 – 
Toon Krijthe
26 Мар 2014 в 11:44
1
@Toon: Да, логические переменные всегда инициализируются как false в VBA.
 – 
Excel Developers
26 Мар 2014 в 17:10