Worksheet_change当单元格中的值被表单控件元素更改时隐藏行



我正在对别人创建的wb进行一些更改,并且需要尽可能减少伤害,因为这个excel将在公司范围内使用。我的问题是,有两个表单控制按钮,根据选择将Z1中的值更改为1或2。

选项2只适用于一行,所以我需要在该行之前隐藏几行。我正在尝试通过工作表的变化,但没有运气,因为值没有以适当的方式改变VBA。当我使用F2+手动输入时,更改宏工作,但当我仅通过按钮更改时则不工作。

我试图越过F2+Enter通过

Range("Z1").FormulaR1C1 = Range("Z1").FormulaR1C1

但是运气不好。我尝试了几个版本的代码。我最喜欢的是这个

If Target.Address = "$Z$1" Then
Range("Z1").FormulaR1C1 = Range("Z1").FormulaR1C1
If Target = "2" Then
Rows("5:13").EntireRow.Hidden = True
Else
Rows("5:13").EntireRow.Hidden = False
End If
End If

我的其他是

If Not Intersect(Target, Range("Z1")) Is Nothing Then
Rows("5:13").EntireRow.Hidden = CBool(Range("Z1").Value = 2)
End If
========
If Not Application.Intersect(Target, Range(Target.Address)) Is Nothing Then ', Range(Target.Address)
Application.EnableEvents = False
Range("Z1").FormulaR1C1 = Range("Z1").FormulaR1C1
Select Case Target.Value
Case Is = "2":  Rows("5:13").EntireRow.Hidden = True
Case Is = "1":  Rows("5:13").EntireRow.Hidden = False
End Select
Application.EnableEvents = True
End If
========
If Intersect(Range("Z1"), Target) Is Nothing Then Exit Sub
Range("Z1").FormulaR1C1 = Range("Z1").FormulaR1C1
Select Case Range("Z1").Value
Case Is = 2
Set HideRows = Rows("5:13")
Set ViewRows = Nothing
Case Is = 1
Set ViewRows = Rows("5:13")
End Select
On Error Resume Next
HideRows.Hidden = True
ViewRows.Hidden = False

两个都不行,我做了一个视频上传到YouTube上

我错过了什么?我需要它的用户与表单控件选择连接。我不能追求改变的形式控制。

更改"链接单元格";

不触发worksheet_change

事件。您可以通过将(例如)=Z1放置在Z2中来触发Worksheet_Calculate事件,然后该公式将在Z1中的值发生变化时计算。这将意味着您将响应工作表上的每个计算,所以您可以确保仅在Z1中的值发生变化时隐藏/取消隐藏:

Private Sub Worksheet_Calculate()
Dim opt, cCache As Range
Set cCache = Me.Range("Z3")                       'cell with last value
opt = Me.Range("Z1").Value                        'get current value
If opt <> cCache.Value Then                       'compare to last value
Debug.Print "Rows toggle"
Me.Rows("5:13").EntireRow.Hidden = (opt = 2)  'hide/unhide
cCache.Value = opt                            'save this for next change
End If
End Sub

相关内容

  • 没有找到相关文章

最新更新