繁体   English   中英

Excel VBA代码(分配给按钮)可基于另一个工作表中的单元格值隐藏/取消隐藏行

[英]Excel VBA code (assigned to a button) to hide/unhide rows based on cell values across another sheet

我正在处理一张工作表,在该工作表中我们正在计算风险等级,最后选择调查表类型为“ Offsite-Lite”。 通过选择此值,我希望隐藏其他工作表名称“ C.问卷”中的某些行。 为此,我在表“ C.调查表”中使用值“ Full”的D列。 我想通过ActiveX按钮完成此任务。

Sub OpenQuestionnaire()

   With ThisWorkbook.Worksheets("C. Questionnaire")
       .Visible = xlSheetVisible
       .Activate

    If Range("XFD3").Value = "Offsite - Lite" Then
          Sheets("C. Questionnaire").Select
          Columns("G").Hidden = True
    ElseIf Range("XFD3").Value = "Onsite - Full" Then
          Columns("G").Hidden = True
    End If

    If Range("XFD1").Value = "No" Then
         Range("H166").Select
         ActiveCell.FormulaR1C1 = "Not Applicable"
         Range("I166").Select
         ActiveCell.FormulaR1C1 = "Not Applicable"
         Range("H166").Select
         Selection.AutoFill Destination:=Range("H166:H181"), Type:=xlFillDefault
         Range("H166:H181").Select
         Selection.AutoFill Destination:=Range("H166:I181"), Type:=xlFillDefault
         Range("H166:I181").Select
         Rows("163:181").EntireRow.Hidden = True
     ElseIf Range("XFD1").Value = "Yes" Then
         Rows("163:181").EntireRow.Hidden = False
     End If

     If Range("XFD2").Value = "No" Then
          Range("H216").Select
          ActiveCell.FormulaR1C1 = "Not Applicable"
          Range("I216").Select
          ActiveCell.FormulaR1C1 = "Not Applicable"
          Range("H216").Select
          Selection.AutoFill Destination:=Range("H216:H232"), Type:=xlFillDefault
          Range("H216:H232").Select
          Selection.AutoFill Destination:=Range("H216:I232"), Type:=xlFillDefault
          Range("H216:I232").Select
          Rows("213:233").EntireRow.Hidden = True
      ElseIf Range("XFD2").Value = "Yes" Then
          Rows("213:233").EntireRow.Hidden = False
      End If

    End With

End Sub

这是上面代码的清理版本,摆脱了ActivateSelect

Sub OpenQuestionnaire()

With ThisWorkbook.Worksheets("C. Questionnaire")
    .Visible = xlSheetVisible

    If .Range("XFD3").Value = "Offsite - Lite" Or .Range("XFD3").Value = "Onsite - Full" Then
          .Columns("G").Hidden = True
    End If

    If .Range("XFD1").Value = "No" Then
         .Range("H166:I181").Value = "Not Applicable"
         .Rows("163:181").EntireRow.Hidden = True
    ElseIf .Range("XFD1").Value = "Yes" Then
         .Rows("163:181").EntireRow.Hidden = False
    End If

    If .Range("XFD2").Value = "No" Then
        .Range("H216:I232").Value = "Not Applicable"
        .Rows("213:233").EntireRow.Hidden = True
    ElseIf Range("XFD2").Value = "Yes" Then
        .Rows("213:233").EntireRow.Hidden = False
    End If

End With

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM