【发布时间】:2017-10-14 10:46:08
【问题描述】:
我正在尝试根据从数据验证列表中的选择清除合并单元格的内容(该列表也在合并单元格中)。是的,“不要使用合并的单元格!”是很好的建议(我更喜欢“中心交叉”),但在这种情况下会使事情复杂化。我尝试使用“MergeArea”等命名合并的单元格,但我还没有成功找到解决方案。
以下是我的最新版本。请注意,在添加第二个选择(或在本例中为“空白”)之前,我一直在尝试只进行一个选择(在本例中为“是”)。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Range("Max_Advance").MergeArea Then
If Range.Validation.Type = 2 Then
Range("Days_Needed").MergeArea.ClearContents
End If
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
End Sub
有人可以帮忙吗?我还附上了一张图片,以直观地展示我正在使用的内容:
【问题讨论】:
-
If Range.Validation.Type = 2 Then,您需要指定要检查的范围。我假设您收到此代码的错误?什么错误,在哪里? -
我没有收到错误(或者不知道如何查找错误)。当我单击“运行宏”按钮时,它会询问宏名称。既然这是一个私人潜艇,也许它没有出现?有没有办法调试私人潜艇?抱歉,这个是新手。 sktneer 提供的响应有效。
-
啊 - 无法通过“查看宏”窗口调用私人订阅者。
Private表示它们从该视图中隐藏。最重要的是,AFAIK 触发Worksheet_Change()子的唯一方法是实际更改/单击单元格。如果您想测试Private子程序,您可以在即时窗口中输入子程序的名称(按 CTRL+G 在 VBEditor 中显示)。 IE。Private Sub myMacro()可以通过在即时窗口中键入myMacro并按 ENTER 来调用。 -
太棒了。谢谢你的解释!
标签: excel vba validation merge