首页 > 解决方案 > VBA - 使用 vba 隐藏预定义范围

问题描述

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

我有表 1 和表 2

在工作表 1 上,根据用户选择、复选框值等创建了一个表。这很好。

然后,我正在查看工作表 1 中的某一行,它的值,applying =(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 上的行,但无法使其正常工作。

请让我知道你的想法。谢谢

标签: excelvbashow-hide

解决方案


您有一些语法问题和一个错字。

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

对于 line '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

推荐阅读