【问题标题】:VBA adding cell validation failing for single cell rangeVBA为单个单元格范围添加单元格验证失败
【发布时间】:2015-07-07 22:45:27
【问题描述】:

我有一个 VBA 宏,它从另一个工作表作为 Range 对象获取数据,并使用该 Range 对象在当前工作表上的单元格上添加验证,如下所示

With Cells(c.Row, colResource).Validation
    .Delete
    .Add Type:=xlValidateList, Formula1:="=" & Sheets(sheetResources).Name & "!" & resRng.Address
    .InCellDropdown = True
End With

这很好用,除非resRng 对象只有一个单元格。 什么会导致包含多个单元格的范围工作但单个单元格范围失败?

任何帮助将不胜感激!

谢谢!

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这个问题的解决方案展示了 Excel 是多么奇怪。

    首先,查看formula1 参数中输入的内容。

    如果选择了单个单元格:

    $G$2
    

    如果选择了一系列单元格:

    $G$2:$G$3
    

    令人恼火的是,Excel 期待你的范围的开始和结束。

    解决方案是检查范围大小,这是我用于测试的基于您的示例代码,您可以根据需要进行调整。

    Sub add_validation()
    
    Dim rng As Range
    Set rng = Selection
    
    
    With Cells(1, 1).Validation
        .Delete
        If Selection.Count = 1 Then
            .Add Type:=xlValidateList, Formula1:="=" & ActiveSheet.Name & "!" & rng.Address & ":" & rng.Address
        ElseIf Selection.Count > 1 Then
            .Add Type:=xlValidateList, Formula1:="=" & ActiveSheet.Name & "!" & rng.Address
        End If
        .InCellDropdown = True
    End With
    
    End Sub
    

    您的代码已实现大小检查:

    With Cells(c.Row, colResource).Validation
        .Delete
        If resrng.Count = 1 Then
            .Add Type:=xlValidateList, Formula1:="=" & Sheets(sheetResources).Name & "!" & resrng.Address & ":" & resrng.Address
        ElseIf resrng.Count > 1 Then
            .Add Type:=xlValidateList, Formula1:="=" & Sheets(sheetResources).Name & "!" & resrng.Address
        End If
        .InCellDropdown = True
    End With
    

    【讨论】:

    • 对于一个令人沮丧的问题,这是一个简单得令人麻木的解决方案。是的,excel很奇怪!在一个理想的面向对象的世界中,Excel 应该只是调用 Range 对象内的一个函数并要求它提供正确的地址,而 Range 对象应该自己处理单个单元格。但它毕竟不是一个理想的世界。感谢一百万泽克。我希望我可以为您的答案投票一千次,但我没有足够的声誉来这样做!
    • @ArijitKanrar 我的意思是,你可以投票 一次。你也可以接受它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多