【问题标题】:How to hide and not hide cells between columns using VBA-code in excel如何在excel中使用VBA代码隐藏和不隐藏列之间的单元格
【发布时间】:2014-05-21 14:46:48
【问题描述】:

我是编写 VBA 代码的新手,遇到了一点问题。

我们目前正在进行一项研究,我们将从参与者那里收到问卷调查。有很多“如果问题 2 是,请回答问题 3,如果不是,请继续问题 4。一旦我们在 excel 中输入此数据,每个参与者的答案都会得到一列。因此,我们希望在 VBA 代码中写入一列的条件应用到其余的列,我不能让它工作。

下面提供了适用于 B 列的代码。我们如何应用此代码使其适用于所有列? IE。我们如何先在 B 栏中提供参与者 A 的答案,然后在填写参与者 B 在 C 栏中的答案时重新开始?我尝试了几种方法,例如循环,“对于每一列..”,但无法将它们放在一起。

非常感谢一些帮助!

谢谢。

艾琳

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("B3") = 3 Then
        Rows("4:4").EntireRow.Hidden = False
    Else
        Rows("4:4").EntireRow.Hidden = True
    End If
If Range("B5") = 1 Then
        Rows("6:6").EntireRow.Hidden = False
    Else
        Rows("6:6").EntireRow.Hidden = True
    End If
If Range("B7") = 1 Then
        Rows("8:8").EntireRow.Hidden = False
    Else
        Rows("8:8").EntireRow.Hidden = True
    End If
If Range("B9") = 1 Then
        Rows("10:10").EntireRow.Hidden = False
    Else
        Rows("10:10").EntireRow.Hidden = True
    End If
If Range("B18") = 1 Then
        Rows("19:21").EntireRow.Hidden = False
    Else
        Rows("19:21").EntireRow.Hidden = True
    End If
If Range("B19") = 6 Then
        Rows("20:20").EntireRow.Hidden = False
    Else
        Rows("20:20").EntireRow.Hidden = True
    End If

End Sub

【问题讨论】:

  • 您正在尝试在 Excel 电子表格中编写调查问卷?对于这项工作来说,这似乎是一个非常糟糕的工具。您如何填写这份问卷?卡蒂?邮寄/亲自/拦截?在线?
  • 您需要提供有关此工作表结构的更多信息。行/列是如何排列的?完全不清楚您要做什么——每个受访者记录是否都有新的一行?还是每个问题都是一行?等屏幕截图/图像会有所帮助,您可以上传到 IMGUR.COM 并在此处发布链接以帮助说明您的问题。

标签: excel vba show-hide multiple-columns


【解决方案1】:

类似这样的:

Option Explicit


Private Sub Worksheet_Change(ByVal Target As Range)
    HideUnhide Target
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    HideUnhide Target
End Sub

Private Sub HideUnhide(ByVal Target As Range)
    Dim col As Range
    Set col = Target.Cells(1).EntireColumn
    With Me
        .Rows("4:4").EntireRow.Hidden = col.Cells(3).Value <> 3
        .Rows("6:6").EntireRow.Hidden = col.Cells(5).Value <> 1
        .Rows("8:8").EntireRow.Hidden = col.Cells(7).Value <> 1
        .Rows("10:10").EntireRow.Hidden = col.Cells(9).Value <> 1
        .Rows("19:21").EntireRow.Hidden = col.Cells(18).Value <> 1
        .Rows("20:20").EntireRow.Hidden = col.Cells(19).Value <> 6
    End With
End Sub

【讨论】:

    猜你喜欢
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多