Excel 基于下拉列表数字选择隐藏/显示行
我有一个下拉列表,其中有数字0到10。零隐藏第1行到第10行,1仅显示第1行,2仅显示第1行和第2行,依此类推到nbr 10。这是预期的工作,我可以从nbr 1上升到10,并显示所有正确的行数 例如,如果我选择了第5行,然后选择了第2行,我就不能隐藏第5到第3行 我是VBA新手,如果我添加另一行,将相同的nbr设置为EntireRow.Hidden=true,我想不出该怎么做,原因很明显,这不起作用,因为相同的数字有冲突的操作。有人能帮我吗Excel 基于下拉列表数字选择隐藏/显示行,excel,vba,Excel,Vba,我有一个下拉列表,其中有数字0到10。零隐藏第1行到第10行,1仅显示第1行,2仅显示第1行和第2行,依此类推到nbr 10。这是预期的工作,我可以从nbr 1上升到10,并显示所有正确的行数 例如,如果我选择了第5行,然后选择了第2行,我就不能隐藏第5到第3行 我是VBA新手,如果我添加另一行,将相同的nbr设置为EntireRow.Hidden=true,我想不出该怎么做,原因很明显,这不起作用,因为相同的数字有冲突的操作。有人能帮我吗 If Target.Address = Range("
If Target.Address = Range("SRUAdd").Address Then
If Range("SRUAdd").Value = "0" Then ' hide rows 1 to 10
Rows((Target.Row + 4) & ":" & (Target.Row + 13)).EntireRow.Hidden = True
ElseIf Range("SRUAdd").Value = "1" Then ' show row #1
Rows(Target.Row + 4).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "2" Then ' show row #2
Rows((Target.Row + 4) & ":" & (Target.Row + 5)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "3" Then ' show row #3
Rows((Target.Row + 4) & ":" & (Target.Row + 6)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "4" Then ' show row #4
Rows((Target.Row + 4) & ":" & (Target.Row + 7)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "5" Then ' show row #5
Rows((Target.Row + 4) & ":" & (Target.Row + 8)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "6" Then ' show row #6
Rows((Target.Row + 4) & ":" & (Target.Row + 9)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "7" Then ' show row #7
Rows((Target.Row + 4) & ":" & (Target.Row + 10)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "8" Then ' show row #8
Rows((Target.Row + 4) & ":" & (Target.Row + 11)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "9" Then ' show row #9
Rows((Target.Row + 4) & ":" & (Target.Row + 12)).EntireRow.Hidden = False
ElseIf Range("SRUAdd").Value = "10" Then ' show row #10
Rows((Target.Row + 4) & ":" & (Target.Row + 13)).EntireRow.Hidden = False
End If
End If
预期结果是,我希望根据从下拉列表中选择的数字显示和隐藏正确的行。当前结果是根据下拉选择仅显示正确的行。逻辑是隐藏所有内容,然后取消隐藏相关行。实际上,如果范围(“SRUAdd”).Value=“0”,则不需要条件
。如果范围(“SRUAdd”).Value=“1”那么直接从开始。您也可以使用选择案例
这就是你正在尝试的(未经测试的)吗
Dim sRow As Long,toRow As Long
如果Target.Address=Range(“SRUAdd”).Address,则
行((Target.Row+4)&):“&(Target.Row+13)).EntireRow.Hidden=True
sRow=目标行+2
选择案例范围(“SRUAdd”)。值
案例1:toRow=Target.Row+4
案例2:toRow=Target.Row+5
案例3:toRow=Target.Row+6
案例4:toRow=Target.Row+7
案例5:toRow=Target.Row+8
案例6:toRow=Target.Row+9
案例7:toRow=Target.Row+10
案例8:toRow=Target.Row+11
案例9:toRow=Target.Row+12
案例10:toRow=Target.Row+13
结束选择
如果toRow为0,则为行(sRow&“:”&toRow)。EntireRow.Hidden=False
如果结束
编辑:
我可以用行((Target.Row+44)&“&(Target.Row+53)).EntireRow.Hidden=True代码隐藏第二个表,我不知道如何将额外的代码添加到case部分。我试过一些方法,但不起作用。。。我认为“案例1、案例2”等与下拉框中选择的数字有关?我尝试过案例1:toRow=Target.Row+4+44,但这不起作用Stacson 3小时前
你必须分开处理这张桌子。看这个
Dim sRowTblA As Long, toRowTblA As Long
Dim sRowTblB As Long, toRowTblB As Long
If Target.Address = Range("SRUAdd").Address Then
Rows((Target.Row + 4) & ":" & (Target.Row + 13)).EntireRow.Hidden = True
Rows((Target.Row + 44) & ":" & (Target.Row + 53)).EntireRow.Hidden = True
sRowTblA = Target.Row + 2
sRowTblB = Target.Row + 44
Select Case Range("SRUAdd").Value
Case 1
toRowTblA = Target.Row + 4
toRowTblB = Target.Row + 44
Case 2
toRowTblA = Target.Row + 5
toRowTblB = Target.Row + 45
Case 3
toRowTblA = Target.Row + 6
toRowTblB = Target.Row + 46
Case 4
toRowTblA = Target.Row + 7
toRowTblB = Target.Row + 47
'
'~~> And So on
'
End Select
If toRowTblA <> 0 Then Rows(sRowTblA & ":" & toRowTblA).EntireRow.Hidden = False
If toRowTblB <> 0 Then Rows(sRowTblB & ":" & toRowTblB).EntireRow.Hidden = False
End If
Dim sRowTblA为长,toRowTblA为长
尺寸sRowTblB为长,TOROWTBB为长
如果Target.Address=Range(“SRUAdd”).Address,则
行((Target.Row+4)&):“&(Target.Row+13)).EntireRow.Hidden=True
行((Target.Row+44)&):“&(Target.Row+53)).EntireRow.Hidden=True
sRowTblA=Target.Row+2
sRowTblB=目标行+44
选择案例范围(“SRUAdd”)。值
案例1
toRowTblA=目标行+4
toRowTblB=目标行+44
案例2
toRowTblA=目标行+5
toRowTblB=目标行+45
案例3
toRowTblA=目标行+6
toRowTblB=目标行+46
案例4
toRowTblA=目标行+7
toRowTblB=目标行+47
'
“~~>等等
'
结束选择
如果toRowTblA为0,则为行(sRowTblA&“:”&toRowTblA)。EntireRow.Hidden=False
如果toRowTblB为0,则为行(sRowTblB&“:”&toRowTblB)。EntireRow.Hidden=False
如果结束
逻辑是隐藏所有内容,然后取消隐藏相关行。实际上,如果范围(“SRUAdd”).Value=“0”,则不需要条件。如果范围(“SRUAdd”).Value=“1”那么直接从开始。您也可以使用选择案例
这就是你正在尝试的(未经测试的)吗
Dim sRow As Long,toRow As Long
如果Target.Address=Range(“SRUAdd”).Address,则
行((Target.Row+4)&):“&(Target.Row+13)).EntireRow.Hidden=True
sRow=目标行+2
选择案例范围(“SRUAdd”)。值
案例1:toRow=Target.Row+4
案例2:toRow=Target.Row+5
案例3:toRow=Target.Row+6
案例4:toRow=Target.Row+7
案例5:toRow=Target.Row+8
案例6:toRow=Target.Row+9
案例7:toRow=Target.Row+10
案例8:toRow=Target.Row+11
案例9:toRow=Target.Row+12
案例10:toRow=Target.Row+13
结束选择
如果toRow为0,则为行(sRow&“:”&toRow)。EntireRow.Hidden=False
如果结束
编辑:
我可以用行((Target.Row+44)&“&(Target.Row+53)).EntireRow.Hidden=True代码隐藏第二个表,我不知道如何将额外的代码添加到case部分。我试过一些方法,但不起作用。。。我认为“案例1、案例2”等与下拉框中选择的数字有关?我尝试过案例1:toRow=Target.Row+4+44,但这不起作用Stacson 3小时前
你必须分开处理这张桌子。看这个
Dim sRowTblA As Long, toRowTblA As Long
Dim sRowTblB As Long, toRowTblB As Long
If Target.Address = Range("SRUAdd").Address Then
Rows((Target.Row + 4) & ":" & (Target.Row + 13)).EntireRow.Hidden = True
Rows((Target.Row + 44) & ":" & (Target.Row + 53)).EntireRow.Hidden = True
sRowTblA = Target.Row + 2
sRowTblB = Target.Row + 44
Select Case Range("SRUAdd").Value
Case 1
toRowTblA = Target.Row + 4
toRowTblB = Target.Row + 44
Case 2
toRowTblA = Target.Row + 5
toRowTblB = Target.Row + 45
Case 3
toRowTblA = Target.Row + 6
toRowTblB = Target.Row + 46
Case 4
toRowTblA = Target.Row + 7
toRowTblB = Target.Row + 47
'
'~~> And So on
'
End Select
If toRowTblA <> 0 Then Rows(sRowTblA & ":" & toRowTblA).EntireRow.Hidden = False
If toRowTblB <> 0 Then Rows(sRowTblB & ":" & toRowTblB).EntireRow.Hidden = False
End If
Dim sRowTblA为长,toRowTblA为长
尺寸sRowTblB为长,TOROWTBB为长
如果Target.Address=Range(“SRUAdd”).Address,则
行((Target.Row+4)&):“&(Target.Row+13)).EntireRow.Hidden=True
行((Target.Row+44)&):“&(Target.Row+53)).EntireRow.Hidden=True
sRowTblA=Target.Row+2
sRowTblB=目标行+44
选择案例范围(“SRUAdd”)。值
案例1
toRowTblA=目标行+4
toRowTblB=目标行+44
案例2
toRowTblA=目标行+5
toRowTblB=目标行+45
案例3
toRowTblA=目标行+6
toRowTblB=目标行+46
案例4
toRowTblA=目标行+7
toRowTblB=目标行+47
'
“~~>等等
'
结束选择
如果toRowTblA为0,则为行(sRowTblA&“:”&toRowTblA)。EntireRow.Hidden=False
如果toRowTblB为0,则为行(sRowTblB&“:”&toRowTblB)。EntireRow.Hidden=False
如果结束