首先,我不是VBA程序员,但通常是最终用户,他使用我在其电子表格中收集的论坛中的代码片段,试图了解代码的作用。代码我感谢你们所有人!
我的目标: 我有一个电子表格,基本上是用户的输入表单。 根据他们的输入和选择通过下拉列表,我的目的是通过隐藏&使用输入字段取消隐藏行,向用户显示相关问题。
在每一行上,我创建了一个基于先前提供的输入创建1或0的IF公式 1 - >取消隐藏行,0 - >隐藏行。
所以我正在寻找一个与每个工作表计算一起运行的宏,并根据需要隐藏或取消隐藏下一行。
这些公式在I3:I70
范围内,我在I2
=sum(I3:I70)
中创建了一个摘要字段,所以我想我可以检查I3:I70
范围内的更改或更改单元格I2
以触发宏。 [两种解决方案都没有解决我的问题]
我已经尝试了论坛上描述的几个代码示例,并且我已经测试了用于检查范围或单元格中的更改的宏。
只要我使用MsgBox
调用测试宏,它就可以正常工作。
当我手动调用它时,隐藏或取消隐藏的宏运行正常。
我的问题: 当我让'auto'-macro调用'hide' - 宏时, Excel只会崩溃;没有警告,没有 - >只是崩溃。
我的代码:
Private Sub Worksheet_Calculate()
Dim Xrg As Range
Set Xrg = Range("H3:H70")
If Not Intersect(Xrg, Range("H3:H70")) Is Nothing Then
Macro1
End If
End Sub
Sub Sample()
MsgBox "Yes"
End Sub
Sub Macro1()
Dim cell As Range
For Each cell In Range("H3:H70")
If Not IsEmpty(cell) Then
If cell.Value = 0 Then
cell.EntireRow.Hidden = True
End If
If cell.Value = 1 Then
cell.EntireRow.Hidden = False
End If
End If
Next
End Sub
提前感谢任何建议和提示。
JeWe
答案 0 :(得分:1)
永远不要放弃搜索:-)我给了它最后一次搜索,并在microsfof dot com网站上找到了一些似乎有效的代码。 不要问我细节,但这似乎做我正在寻找的
Private Sub Worksheet_Calculate()
Dim LastRow As Long, c As Range
Application.EnableEvents = False
On Error Resume Next
For Each c In Range("H3:H70")
If c.Value = 0 Then
c.EntireRow.Hidden = True
ElseIf c.Value = 1 Then
c.EntireRow.Hidden = False
End If
Next
On Error GoTo 0
Application.EnableEvents = True
End Sub
世界末日已经晚了,要睡觉了。明天会更新。 Txs JeWe