我想为一些VBA形式组合框设置3个属性,我不知道是否可能。 我不想让组合框可编辑。现在,如果用户在其中键入提交表单的内容,它将发送该值...我想让他只选择我在Combobox中添加的值。 我想让组合框中的项目列表可滚动。现在,如果我使用滚动条,我可以滚动列表,但我不知道为什么我不能用鼠标滚动滚动。 如果我开始打字,我想跳到某个项目。假设我在一个组合框中有一年中的几个月...如果我开始输入mar我希望它跳到游行。我知道对于html表单,这个属性是默认的,但我不知道VBA表单... 非常感谢
答案 0 :(得分:2)
在您想要的行为中,有些可以使用Combo上的设置,有些则需要编码
.RowSource
设置为该范围.MatchEntry = fmMatchEntryComplete
和.MatchRequired = True
.ControlSource
设置为单元格地址(最好是指定范围)静默拒绝无效条目的示例代码
Private Sub cmbMonth_Change()
Static idx As Long
Dim Match As Boolean
Dim i As Long
If cmbMonth.Value = "" Then Exit Sub
If idx = 0 Then idx = 1
i = idx
Match = False
For i = 0 To cmbMonth.ListCount
If cmbMonth.List((i + idx - 1) Mod cmbMonth.ListCount) Like cmbMonth.Value & "*" Then
cmbMonth.ListIndex = (i + idx - 1) Mod cmbMonth.ListCount
Match = True
Exit For
End If
Next
If Not Match Then
cmbMonth.Value = Left(cmbMonth.Value, Len(cmbMonth.Value) - 1)
End If
End Sub
答案 1 :(得分:1)
将组合框的属性MatchEntry设置为1(fmMatchEntryComplete),将MatchRequired设置为true,例如
combobox1.MatchEntry=1
combobox1.MatchRequired=True
[]的