【问题标题】:Excel | autostart macro on cell value change | cause crash电子表格 |单元格值更改时自动启动宏|导致崩溃
【发布时间】:2018-05-16 01:51:25
【问题描述】:

首先,我不是 VBA 程序员,但通常是最终用户,他使用我在类似论坛中收集到的电子表格中的 sn-ps 代码,试图了解代码的作用。感谢大家的代码!

我的目标: 我有一个电子表格,它基本上是用户的输入表单。 根据他们通过下拉菜单的输入和选择,我的意图是通过使用输入字段隐藏和取消隐藏行来引导他们完成表单,向用户展示相关问题。

在每一行上,我创建了一个 IF 公式,它根据之前提供的输入创建 1 或 0 1 -> 取消隐藏该行,0 -> 隐藏该行。

所以我正在寻找一个宏,它可以在每个工作表计算中运行,并根据需要隐藏或取消隐藏下一行。

这些公式位于I3:I70 范围内宏。 [没有一个解决方案解决了我的问题]

我已经尝试了论坛上描述的几个代码示例,并且我已经测试了单独检查范围或单元格更改的宏。 只要我用MsgBox 调用测试宏,它就可以正常工作。 当我手动调用它时,隐藏或取消隐藏的宏也运行良好。

我的问题: 当我让“自动”宏调用“隐藏”宏时,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

提前感谢您的任何建议和提示。

杰维

【问题讨论】:

  • 为什么不使用宏来添加/删除形状以覆盖工作簿而不是隐藏行?会容易得多。
  • @FernandoJ.Rivera 为了便于阅读,似乎隐藏一行会更好
  • 您可以尝试在其中添加错误处理程序吗?这可能能够在崩溃发生之前捕获错误并输出消息。另外,检查您的错误捕获是否设置为 Break on Unhandled Errors

标签: vba excel


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 2010-09-29
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多