我试图做一个用户输入,其中有两个输入单元格A1和单元格B1。对于单元格A1的操作,我的代码如下:
If target.Address = "$A$1" Then
Select Case Sheets("Input").Range("A1")
Case "Hide1"
Range("A3:A5").EntireRow.Hidden = True
Case "Hide2"
Range("A7:A9").EntireRow.Hidden = True
End Select
End If对于单元格A2的操作,我的代码如下:
If target.Address = "$A$2" Then
Select Case Sheets("Input").Range("A2")
Case "Hide3"
Range("A11:A13").EntireRow.Hidden = True
Case "Hide4"
Range("A15:A17").EntireRow.Hidden = True
End Select
End If如何确保在更改A1之后,即使在更改A2之后,操作(隐藏的行)仍会继续?例如,我将A1更改为“隐藏1",第3-5行被隐藏。接下来,我将A2更改为“隐藏3",希望11-13行隐藏,而第3-5行继续隐藏。
发布于 2022-01-29 16:49:37
我看不出有什么问题。在将A1更改为"Hide1“并将A2更改为"Hide3”后,第3-5行将保持隐藏状态。看一看代码的另一部分。我可以想象,您的代码可能处于SelectionChange事件中,而它应该处于更改事件中:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Select Case Sheets("Input").Range("A1")
Case "Hide1"
Range("A3:A5").EntireRow.Hidden = True
Case "Hide2"
Range("A7:A9").EntireRow.Hidden = True
Case Else
Range("A3:A5").EntireRow.Hidden = False
Range("A7:A9").EntireRow.Hidden = False
End Select
Else
If Target.Address = "$A$2" Then
Select Case Sheets("Input").Range("A2")
Case "Hide3"
Range("A11:A13").EntireRow.Hidden = True
Case "Hide4"
Range("A15:A17").EntireRow.Hidden = True
Case Else
Range("A11:A13").EntireRow.Hidden = False
Range("A15:A17").EntireRow.Hidden = False
End Select
End If
End If
End Sub发布于 2022-01-29 17:00:03
试试这个:
If target.Address = "$A$1" Then
Select Case Sheets("Input").Range("A1")
Case "Hide1"
Application.EnableEvents=False
Range("A3:A5").EntireRow.Hidden = True
Application.EnableEvents=True
Case "Hide2"
Application.EnableEvents==False
Range("A7:A9").EntireRow.Hidden = True
Application.EnableEvents=True
End Select
End If发布于 2022-01-29 18:31:50
工作表更改:隐藏行
Input...etc.A1 (值"Hide1“和"Hide2")和A2 (值"Hide3”和"Hide4")中的变化,并且在任何时候,所有四个‘行集’中只有一个会被隐藏。如果两个单元格都被更改,则只有第一个单元格的行将被隐藏(参见Exit For).urg)表示整个行,.EntireRow在隐藏时仍然是必要的。Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sAddresses As Variant: sAddresses = VBA.Array("A1", "A2")
Dim uVals As Variant: uVals = VBA.Array("Hide1", "Hide2", "Hide3", "Hide4")
Dim urg As Range: Set urg = Range("3:5,7:9,11:13,15:17")
Dim sCell As Range
Dim iCell As Range
Dim n As Long
For n = 0 To UBound(sAddresses)
Set sCell = Range(sAddresses(n))
Set iCell = Intersect(sCell, Target)
If Not iCell Is Nothing Then
urg.EntireRow.Hidden = False ' unhide all 'row sets'
Select Case LCase(iCell.Value)
Case LCase(uVals(n * 2))
urg.Areas(n * 2 + 1).EntireRow.Hidden = True
Case LCase(uVals(n * 2 + 1))
urg.Areas(n * 2 + 2).EntireRow.Hidden = True
End Select
' If both cells are changed, only the first cell's rows get hidden
Exit For
End If
Next n
End Subhttps://stackoverflow.com/questions/70907233
复制相似问题