excel 数据验证自动完成

hiz5n14c  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(177)

我有一个用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
qnakjoqk

qnakjoqk1#

虽然没有完美的解决方案,但我发现这里有一个很容易实现和编辑的解决方案:
http://www.contextures.com/xlDataVal14.html#works (单击/选择单个单元格)http://www.contextures.com/xlDataVal11.html#works(双击单元格)
基本上,当用户单击数据验证单元格时,此代码会将一个组合框直接放置在它上面(使用与数据验证相同的公式填充)。这样,用户仍然可以使用自动完成功能,但不必担心组合框在单元格发生任何变化时移动。

相关问题