【发布时间】: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