数据验证自动填充

时间:2017-10-23 14:12:22

标签: excel vba validation autocomplete

我有一个用VBA编码的数据验证框(请参见下文。)我已经完成了大量的阅读,当有人在数据验证单元格中输入时,无法找到自动完成的方法。

大多数人都提出了一个组合框,但我还没有找到一种方法将组合框放在特定的单元格中。我想要它,以便如果有人试图复制组合框所在的行,他们就可以用另一个组合框粘贴另一行。

通过数据验证,这已经成为可能,但它没有自动完成功能。

感谢任何帮助!

Sub DataValidation()

Dim WS As Worksheet
Dim WS2 As Worksheet
Dim Range1 As Range, Range2 As Range

Set WS = ThisWorkbook.Worksheets("Report")
Set WS2 = ThisWorkbook.Worksheets("MachineList")

Set Range1 = WS.Range("A7") 'This is the cell the data validation is placed in.
Set Range2 = WS2.Range("A2:A64") 'This will change if the Machine List gains or loses machines.

    With Range1.Validation
        .Delete
        .Add Type:=xlValidateList, _
            Formula1:="='" & WS2.Name & "'!" & Range2.Address
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "Machine Name"
        .ErrorTitle = "ERROR: Invalid Machine"
        .InputMessage = "Please enter or select a machine..."
        .ErrorMessage = "You have entered an invalid machine. Please try again."
        .ShowInput = True
        .ShowError = True
    End With

End Sub

1 个答案:

答案 0 :(得分:0)

虽然没有完美的解决方案,但我发现这个解决方案很容易实现和编辑:

http://www.contextures.com/xlDataVal14.html#works(单个单元格点击/选择) http://www.contextures.com/xlDataVal11.html#works(双击单击)

基本上,当用户点击数据验证单元格时,此代码会直接在其上放置一个组合框(使用与数据验证相同的公式填充。)这样,用户仍然可以自动完成,但不必如果细胞以任何方式改变,就担心组合框会移动。