【问题标题】:VBA - Hide predefined ranges using vbaVBA - 使用 vba 隐藏预定义范围
【发布时间】:2020-01-10 14:59:21
【问题描述】:

我有一个相对困难的问题,我认为这与我定义变量的方式有关,我无法解决问题,因此有以下问题。无论如何,感谢您花时间阅读。

我有第一张和第二张

在工作表 1 上,根据用户选择、复选框值等创建表格。这工作正常。

然后我正在查看工作表 1 中的某一行及其值,应用 =(int(not(isblank(cellreference)))),如果它有值,则给我一个 1,如果它没有值,则给我一个零。

然后我将我得到的 1 的数量相加来给我一个值。此值被添加到工作表 2 中的预定义范围,这是工作表 1 中表格的“结果”。它实际上是在打印文档,但我不希望空行可见。

使用收到的值我应用="A"&"191"+SUM(P5:P20)&":M206",它给了我一个范围 A199:M206(名为 HideRowsGF 的单元格。 然后我想在工作表 2 中使用这个范围来隐藏行,所以我的代码如下,但我无法让它为

执行和如果,如果 if 是正确的,我正在调用 HideRows 隐藏下面的行

Private Sub HideRows() ' Range 191 - 206
    Dim HideRowsSheet2 As String
    Set HideRowsSheet2 = SH1.Range("HideRowsGF").Value
    'SH2.Rows("HideRowsSheet2").EnireRow.Hidden = True
End Sub

基本上,我使用公式来获取工作表 1 上的路径,并尝试使用该路径隐藏工作表 2 上的行,但无法使其正常工作。

请告诉我你的想法。 谢谢

【问题讨论】:

  • 对不起@SJR,不是故意破坏您评论的连续性

标签: excel vba show-hide


【解决方案1】:

您有一些语法问题和一个拼写错误。

对于Set HideRowsSheet2 = SH1.Range("HideRowsGF").Value 行 - vba 不需要使用Set 关键字设置字符串的值。

对于'SH2.Rows("HideRowsSheet2").EnireRow.Hidden = True 行,您有三个问题-EnireRow 的拼写错误,您没有使用引号引用字符串变量,并且您无法使用Rows() 函数选择范围内的行。

Private Sub HideRows()

    Dim SH1 As Worksheet
    Set SH1 = Sheets("Sheet1")

    Dim SH2 As Worksheet
    Set SH2 = Sheets("Sheet2")

    Dim HideRowsSheet2 As String
    HideRowsSheet2 = SH1.Range("HideRowsGF").value  'named range HideRowsGF has address "A199:M206"

    SH2.Range(HideRowsSheet2).EntireRow.Hidden = True

End Sub

【讨论】:

  • 您好@marcucciboy2 感谢您的回答。我被困在最后一行,它给了我一系列工作表错误。我认为我指的是一个不存在但找不到它的变量。我已经完全按照您的指示编写了代码。你相信你的指示是 100% 正确的吗?
  • 您的工作表是否命名为“Sheet1”和“Sheet2”?我之所以选择这些是因为它们是默认值,并且您的示例未指定您的工作表名称
  • @MatthewGuzik 让我慢慢了解您所看到的内容
  • 我已经解决了这个问题,感谢您的建议。非常感谢他们。
  • 我能问一下你最后做了什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多