在这个基于单元格输入的简单示例中,我试图通过整数计数来隐藏Excel中的行。我似乎无法正确使用Application.Rows(“x:x”)选择命令的语法。
下面是我的示例代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim k As Integer
For k = 0 To 1
i = 2 + k * 20
If Target.Column = 9 And Target.Row = i And Target.Value = "" Then
Application.Rows("[i+4]:[i+12]").Select
Application.Selection.EntireRow.Hidden = True
Else
Application.Rows("[i+4]:[i+12]").Select
Application.Selection.EntireRow.Hidden = False
End If
If Target.Column = 9 And Target.Row = i And Target.Value = "1" Then
Application.Rows("[i+7]:[i+12]").Select
Application.Selection.EntireRow.Hidden = True
End If
If Target.Column = 9 And Target.Row = i And Target.Value = "2" Then
Application.Rows("[i+10]:[i+12]").Select
Application.Selection.EntireRow.Hidden = True
End If
If Target.Column = 9 And Target.Row = i And Target.Value = "3" Then
Application.Rows("[i+4]:[i+12]").Select
Application.Selection.EntireRow.Hidden = False
End If
Next k
End Sub
发布于 2018-08-15 03:51:21
有了上面关于如何将vba与字符串连接在一起的语句,我们可以使用Select Case来缩短代码。
我们还可以删除循环,因为我们只需要知道target.row是否为两个值。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Column = 9 Then
If Target.Row = 2 Or Target.Row = 22 Then
Rows(Target.Row + 4 & ":" & Target.Row + 12).Hidden = False
Dim j As Long
Select Case Target.Value
Case ""
j = 4
Case "1", 1
j = 7
Case "2",2
j = 10
Case Else
Exit Sub
End Select
Rows(Target.Row + j & ":" & Target.Row + 12).Hidden = True
End If
End If
End Sub
https://stackoverflow.com/questions/51848541
复制相似问题