Excel 数据验证自动完成

Excel 数据验证自动完成,excel,vba,validation,autocomplete,Excel,Vba,Validation,Autocomplete,我有一个用VBA编码的数据验证框(请参见下文)。我已经完成了大量的阅读,当有人在数据验证单元格中键入时,无法找到进行自动完成的方法 大多数人都建议使用组合框,但我还没有找到将组合框放在特定单元格中的方法。我希望这样,如果有人试图复制combobox所在的行,他们就可以用另一个combobox粘贴另一行 通过数据验证,这已经是可能的,但它不具备自动完成功能 感谢您的帮助 Sub DataValidation() Dim WS As Worksheet Dim WS2 As Worksheet D

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

大多数人都建议使用组合框,但我还没有找到将组合框放在特定单元格中的方法。我希望这样,如果有人试图复制combobox所在的行,他们就可以用另一个combobox粘贴另一行

通过数据验证,这已经是可能的,但它不具备自动完成功能

感谢您的帮助

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

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

(单单元格单击/选择) (双击单元格)


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

会有帮助吗?最简单的方法是使用一组隐藏的行以及下拉列表的内容。这样,因为这些值位于上面的单元格中,如果用户键入Excel,将尝试根据上面的行值自动完成。只要确保这些内容行是隐藏的。嗨,tigeravatar,我一直无法让它工作-它会这样做,如果列表很短,但当我把我的整个列表,它不会自动完成。。。此外,列表可能会在某个时刻发生变化,因此如果可能,我希望避免使用此路线。我感谢你的帮助!嗨,斯科特,这似乎是组合框后面的代码。虽然我愿意使用它,但我需要找到一种方法将组合框放置在单元格中,以便用户可以复制它和它所在的行。我感谢你的帮助@mitchmitch24单元格中唯一可以使用的组合框是“数据验证”下拉列表,它不会自动完成。如果您想要自动完成,您需要其他东西,而其他东西不会在单元格中,因为这不是数据验证。你必须选择你的战斗。您可以使ActiveX控件看起来像“在单元格中”,您可以在该单元格中保留数据验证,并将其链接到ActiveX下拉列表,这样您就可以在单元格中找到需要它的数据,并有一个带有自动完成功能的下拉列表。