VBA代码可隐藏空白行,隐藏其中包含数据的另一组行,并操作其他电子表格中的单元格

时间:2019-07-15 19:23:59

标签: excel vba

我有一本包含三个不同电子表格(标签)的工作簿。我需要在第一个电子表格中创建一个宏按钮,单击该按钮将隐藏第18-33行中的任何空白行,并隐藏第53-110行。与第18-33行不同,第53-110行将始终在其中写入单词。该工作簿用于项目预算,只有一个项目(项目A)不需要第53-110行中的信息。除了按钮的这两个参数之外,我还需要使用宏按钮将第三电子表格(标记为“第三方”)上的单元格G26设置为10%。第三方选项卡中的单元格G26具有一个包含0%,5%,10%和15%的下拉菜单(我未选中显示错误警报,以便用户在必要时可以输入其他百分比)。对于除Project A之外的所有其他项目,此单元格需要设置为10%,这就是为什么我需要该按钮还将第三个选项卡上的单元格G26从10%更改为0%的原因(同样,严格来说,对于此宏按钮的Project A被创建)。

我尝试使用下面的宏代码。我能够从以前的工作簿中复制并粘贴一个宏按钮,并将这些代码分配给它们,因此不需要帮助来创建另一个按钮。可以简单地复制和粘贴先前模板中的一个,然后为其分配新的Project A宏代码。为了进一步解释,每个项目预算都需要一个宏按钮来隐藏所有空白行,并使用另一个宏按钮来取消隐藏所有空白行。由于每个项目都是不同的,因此不需要通用的行数。这些按钮是为了使将来的用户更容易使项目预算模板可显示。到目前为止,我有一个按钮可以隐藏此范围内的所有空白单元格(第18-> 33行),还有一个按钮可以取消隐藏该范围内的所有空白单元格。我的问题是为特殊项目(项目A)创建第三个按钮。这三个标签中的每个标签都有隐藏和取消隐藏按钮。我需要一个带有上面提到的三个参数的第三个宏按钮,该按钮位于第一个选项卡中,该选项卡仅用于ProjectA。

Sub HideRows()
    Dim r As Range, c As Range
    Set r = Range("A18:A33")
    Application.ScreenUpdating = False
    For Each c In r
        If Len(c.Text) = 0 Then
            c.EntireRow.Hidden = True
        Else
            c.EntireRow.Hidden = False
        End If
    Next c
    Application.ScreenUpdating = True
End Sub

Sub UnhideRows()
    'To Hide Rows 18 to 33
    Rows("18:33").EntireRow.Hidden = True
    'To UnHide Rows 18 to 33
    Rows("18:33").EntireRow.Hidden = False
End Sub

上面的代码仅在第一个电子表格中的第18-> 33行之间隐藏空白行。我不确定如何隐藏多于一组的空白行,更不用说当一组需要隐藏空白单元格但另一组需要隐藏信息时该怎么办,也不知道如何创建代码来操纵位于不同选项卡上的单元格同时。

1 个答案:

答案 0 :(得分:-1)

最终我自己弄清楚了这一点,想与遇到此问题的任何人分享。

Sub UndoGoogleTemplate()
'First Macro
Call UnhideTermsAndConditions
'Second Macro
Call ManagementFeeBackTo5
End Sub

Sub UnhideTermsAndConditions()
Range("53:110").Rows.Hidden = False
End Sub

Sub ManagementFeeBackTo5()
Sheets("THIRD-PARTY").Range("d26").Value = 0.05
End Sub

我使用了另一个按钮来隐藏空白行,这就是为什么不包含第三个宏的原因。