我正在对别人创建的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