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