2017-08-29 54 views
0

我想添加到创建的DataValidation DropDownList两个额外的东西。首先是将DropDownList中的行数设置为特定的数字,例如可以通过“.ListRows = 11”在VBA中使用普通的combolist。其次,如果用户手动键入而不是从列表中选择,则自动填充由用户键入的文本(Combolist中的MatchEntry)到来自DropDownList的基于单元格的位置。我发现我无法在Validation.Add Method (Excel)的位置上完成任务,而且我对代码构建还不够了解,我该如何去做,或者我该如何裁判创建VBA代码列表。Excel VBA数据验证列表。列表属性

With Range("F26:H26").Validation 
    .Delete 
     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ 
     Operator:=xlBetween, Formula1:="=RootCauses!A1:A11" 
    .IgnoreBlank = True 
    .InCellDropdown = True 
    .InputTitle = varValTitle 
    .ErrorTitle = varValErrTitle 
    .InputMessage = varValMessage 
    .ErrorMessage = varValErrMessgae 
    .ShowInput = True 
    .ShowError = True 
    .ListRows = 11 '← my first broken solution 
    .MatchEntry = 1 '← my second broken solution 
End With 
+0

无需限制行数。这段代码已经做了'Formula1:=“= RootCauses!A1:A11'。数据验证不支持自动完成。因为Excel不公开按键事件,所以很难构建自己的(if你很自在地使用WinAPI [有一种解决方法](https://stackoverflow.com/questions/11153995/is-there-any-event-that-fires-when-keys-are-pressed-when-editing-a - 但它是先进的东西) –

+0

谢谢,但它有8行,我需要11显示所有的可能性,在一个时刻没有滚动 – NoOne

+0

对不起更多的坏消息Excel不包括一个选项来自定义最大数量显示的行。 –

回答

0

好了,数据验证有下拉列表中作为一个额外的选择,所以我创建combolist对象,所有参数设置,就能自动打字的话,行的设置数量,适合要求的范围。