【问题标题】:Hiding Rows in Inactive Sheets in Excel 2013在 Excel 2013 中隐藏非活动工作表中的行
【发布时间】:2014-05-08 23:02:31
【问题描述】:

从 Excel 2010 切换到 Excel 2013,

当 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:=TrueWorksheets("Sheet2").Rows("2:2").EntireRow.Hidden = False 将 userinterfaceonly 选项设置为 true 时,隐藏行的 VBA 代码仅在工作表处于活动状态时有效

我无法在新的 2013 工作表上重新创建此错误。但仅在 2013 年打开 2010 Excel 应用程序时。想知道我是否在这里玩任何设置。

【问题讨论】:

  • 这种情况发生在所有文件上还是只发生在一个文件上?您是否在 Excel 2010 上为 same 文件验证了这一点,还是只是概括?确保工作簿/工作表不受保护。
  • 我能够通过保护Sheet2 重新创建1004 错误,很好的建议@DavidZemens!当然,您可以使用Worksheet.Unprotect Password:="da_password" 清除此内容,注意可能没有密码(在这种情况下您可以简单地使用.Unprotect 方法
  • Worksheets("Sheet2").Protect Password:="password", userinterfaceonly:=True Worksheets("Sheet2").Rows("2:2").EntireRow.Hidden = False 设置时userinterfaceonly 选项为 true,隐藏行的 VBA 代码仅在工作表处于活动状态时有效
  • 使用 AllowFormattingRows:=True, userinterfaceonly:=True ,已解决此问题。

标签: vba excel excel-2013


【解决方案1】:
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

看看我是怎么做的

Sheets("Script1").Visible = True

然后

Sheets("Script1").Visible = False

【讨论】:

    【解决方案2】:

    哎呀,我的错上面不是你想要的。

    在这里尝试以下代码:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多