Скрытие строк в неактивных таблицах в Excel 2013

Переходя на Excel 2013 с Excel 2010,

Когда Sheet2 неактивен

Код

Worksheets("Sheet2").Rows("432:432").EntireRow.Hidden = False

дает ошибку

Unable to set the Hidden property of the Range class

Но отлично работает, когда Sheet2 является активным листом

В Excel 2010 у VBA не было проблем со скрытием строк в InactiveSheets.

Это изменение в Excel 2013. Если да, то исправление.

РЕДАКТИРОВАТЬ: Worksheets("Sheet2").Protect Password:="password", userinterfaceonly:=True Worksheets("Sheet2").Rows("2:2").EntireRow.Hidden = False При установке для параметра userinterfaceonly значения true, код VBA для скрытия строки работает только тогда, когда лист активен

Я не могу воссоздать эту ошибку на новом листе 2013 года. Но только при открытии приложения Excel 2010 в 2013 году. Интересно, не играю ли я здесь с какими-либо настройками.


person Shorn Jacob    schedule 08.05.2014    source источник
comment
Это происходит со всеми файлами или только с одним? Вы проверили это в Excel 2010 для того же файла (ов) или просто обобщили? Убедитесь, что книга / рабочий лист не защищен.   -  person David Zemens    schedule 09.05.2014
comment
Мне удалось воссоздать ошибку 1004, защитив Sheet2, отличное предложение @DavidZemens! Конечно, вы можете очистить это, используя Worksheet.Unprotect Password:="da_password", отметив, что пароля может не быть (в этом случае вы можете просто использовать метод .Unprotect   -  person Dan Wagner    schedule 09.05.2014
comment
Рабочие листы (Sheet2) .Protect Password: = password, userinterfaceonly: = True Worksheets (Sheet2) .Rows (2: 2) .EntireRow.Hidden = False При установке для параметра userinterfaceonly значения true код VBA для скрытия строки работает только тогда, когда лист активный   -  person Shorn Jacob    schedule 09.05.2014
comment
С AllowFormattingRows: = True, userinterfaceonly: = True это было исправлено.   -  person Shorn Jacob    schedule 12.05.2014


Ответы (2)


Sub MakeScript1()
application.ScreenUpdating = False
Sheets("Script1").Visible = True
ThisWorkbook.Sheets("Script1").Select
  Dim x As Long, Z As Long, FF As Long, TextOut As String
  Const OutputPath As String = "c:\temp\"   '<==Note the trailing backslash
  Const BaseFileName As String = "Script1"
  Const StartColumn As Long = 1   'Assumed Column A
  Const StartRow As Long = 1      'Assumed Row 1
  For x = StartColumn + 1 To StartColumn + 1
    TextOut = ""
    For Z = StartRow To StartRow + 19
      TextOut = TextOut & Cells(Z, StartColumn).Value & " " & Cells(Z, x).Value & vbNewLine
    Next
    FF = FreeFile
    Open OutputPath & BaseFileName & ".vbs" For Output As #FF
    Print #FF, TextOut
    Close #FF
  Next
ThisWorkbook.Sheets("Instructions").Select
Sheets("Script1").Visible = False
application.ScreenUpdating = True
End Sub

посмотри, как я

Таблицы ("Скрипт1"). Visible = True

а потом

Таблицы ("Скрипт1"). Visible = False

person DeerSpotter    schedule 04.08.2015

ой, моя беда, это не то, что вы хотели.

вот попробуйте код из этого:

Dim RowsToHide As Range
Dim RowHideNum As Integer

' Set Correct Start Dates for Billing in New File
Workbooks("----- Combined_New_Students_Updated.xlsx").Activate
Sheets("2015").Activate
StartDateLine1 = Format(START_DATE_1, "ww") - 1 ' Convert Start Date to Week Number
StartDateLine1 = (StartDateLine1 * 6) - 2 ' Convert Start Date to Line Number
If StartDateLine1 >= "10" Then
 Cells(4, "q").Value = ""
 Cells(StartDateLine1, "q").Value = STATUS_1
 Cells(StartDateLine1, "z").Value = "START DATE " + START_DATE_1
 RowHideNum = StartDateLine1 - 2
 Set RowsToHide = Range(Cells(3, "a"), Cells(RowHideNum, "ab"))
 RowsToHide.Select
 RowsToHide.EntireRow.Hidden = True
End If
person DeerSpotter    schedule 04.08.2015