【问题标题】:Clear Merged Cell Contents Based on Data Validation List Selection根据数据验证列表选择清除合并的单元格内容
【发布时间】: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


【解决方案1】:

这对你有用吗?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then
    On Error GoTo exitHandler
    Application.EnableEvents = False
    If LCase(Target.Value) <> "no. please enter." Then
        Range("Days_Needed").MergeArea.ClearContents
    End If
End If
exitHandler:
    Application.EnableEvents = True
    Exit Sub
End Sub

【讨论】:

  • 这非常有效。非常感谢您的帮助!
【解决方案2】:

您通常可以通过将合并单元格视为合并中的第一个单元格来清除合并单元格的内容。

例如:

Range("A2")=""

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2016-01-15
    相关资源
    最近更新 更多