使用基于文本的下拉列表的VBA nad输入值在excel中隐藏或显示表格(而非工作表)中的列和行

使用基于文本的下拉列表的VBA nad输入值在excel中隐藏或显示表格(而非工作表)中的列和行,vba,excel,Vba,Excel,我正在编写一个表格,以便根据一个单元格中的数值和另一个单元格中的文本值(下拉列表)显示行。我完成了行的代码,但似乎无法理解列 编辑:我要做的是根据下拉列表中的输入值显示许多列中的一列或两列。同时,显示的行数取决于另一个单元格。例如,如果我有三种糖果,每栏一种。在这些行中,我展示了我每天吃多少糖果。我只想展示其中一种糖果,为期x天。如何编写此代码?我解决的行部分,列-我需要帮助 这是我目前的代码,我应该如何着手解决我的困境 Private Sub Worksheet_Change(ByVal Ta

我正在编写一个表格,以便根据一个单元格中的数值和另一个单元格中的文本值(下拉列表)显示行。我完成了行的代码,但似乎无法理解列

编辑:我要做的是根据下拉列表中的输入值显示许多列中的一列或两列。同时,显示的行数取决于另一个单元格。例如,如果我有三种糖果,每栏一种。在这些行中,我展示了我每天吃多少糖果。我只想展示其中一种糖果,为期x天。如何编写此代码?我解决的行部分,列-我需要帮助

这是我目前的代码,我应该如何着手解决我的困境

Private Sub Worksheet_Change(ByVal Target As Range)

Application.ScreenUpdating = False



If Not Intersect(Target, Range("Time_horizon")) Is Nothing Then

TH_row_update

TH_column_update

End If

End Sub

Public Sub TH_row_update()

Dim cell As Range


    For Each cell In Range("Time_horizon_Year")
        If cell.Value >= ActiveSheet.Range("Time_Horizon") Then
            cell.EntireRow.Hidden = True
        ElseIf cell.Value <= ActiveSheet.Range("Time_Horizon") Then
            cell.EntireRow.Hidden = False
            End If
    Next cell


Application.ScreenUpdating = True

End Sub

Public Sub TH_column_update()

Dim cell As Range


    For Each cell In Range("comparator_range")
        If cell.Value = ActiveSheet.Range("Combination_comparators") Then
            cell.EntireColumn.Hidden = True
        ElseIf cell.Value <= ActiveSheet.Range("Combination_comparators") Then
            cell.EntireColumn.Hidden = False
            End If
    Next cell


Application.ScreenUpdating = True

End Sub
Private子工作表\u更改(ByVal目标作为范围)
Application.ScreenUpdating=False
如果不相交(目标、范围(“时间视界”)则为零
第四行更新
第列更新
如果结束
端接头
公共子行更新()
暗淡单元格作为范围
对于范围内的每个单元格(“时间\地平线\年”)
如果cell.Value>=ActiveSheet.Range(“时间范围”),则
cell.EntireRow.Hidden=True

ElseIf cell.Value如果要通过列和单元格:

For Each col In Range("comparator_range").Columns
    Debug.Print "column " & col.Address
    For Each cel In col.Cells
      Debug.Print "  - cell " & cel.Address
    Next cel
Next col
假设你的范围是A1:C5 此范围内存在的每个列的第一个值表示A B C

第二个用于柱内每个槽的每个单元,表示A1-A5、B1-B5、C1-C5


希望这已经对你有所帮助,如果你需要更多的信息就告诉它

如果您想通过柱和单元:

For Each col In Range("comparator_range").Columns
    Debug.Print "column " & col.Address
    For Each cel In col.Cells
      Debug.Print "  - cell " & cel.Address
    Next cel
Next col
假设你的范围是A1:C5 此范围内存在的每个列的第一个值表示A B C

第二个用于柱内每个槽的每个单元,表示A1-A5、B1-B5、C1-C5


希望这已经对你有所帮助,如果你需要更多的信息就告诉它

谢谢你的回答!我不确定,我编辑了我的原创文章,其中(我认为是)对我想要制作的东西有了更好的解释。你能添加一个像输入值前后这样的例子吗?谢谢你的回答!我不确定,我编辑了我的原创文章,其中(我认为是)对我想要制作的东西有了更好的解释。您能否添加一个类似输入值前后的示例。