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