Excel |关于单元格值更改的自动启动宏|导致崩溃

时间:2017-12-01 22:09:46

标签: excel vba excel-vba

首先,我不是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

1 个答案:

答案 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