【发布时间】:2020-11-22 21:15:44
【问题描述】:
我有一个组合框,当您在其中键入时,下拉列表会动态填充与键入的输入匹配的结果。
我面临的问题是,当您在组合框中输入时,您看不到您输入的内容。在下图中,您可以看到有一个带有“Build”的单元格 - 这是我临时设置的链接单元格以显示输入的内容。
上面的单元格和列表之间的白框是我输入的地方。但正如您所见,没有可见的文字。
点击工作表上的其他地方后,输入的文本会出现
我想要发生的事情(并且我肯定曾经这样做过)是,当我在组合框中键入文本时,应该显示正在键入的内容。
假设这与我设置的 vba 代码有关,我复制了下面的代码和组合框的属性。
搜索了几个小时,我还没有找到相关的帖子或解决此问题的方法。
Private Sub OccupationComboBox_Change()
Call OccupationComboBox_Populate
OccupationComboBox.DropDown
End Sub
Private Sub OccupationComboBox_DropButtonClick()
Call OccupationComboBox_Populate
OccupationComboBox.DropDown
End Sub
Private Sub OccupationComboBox_Click()
Call OccupationComboBox_Populate
OccupationComboBox.DropDown
End Sub
Private Sub OccupationComboBox_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Call OccupationComboBox_Populate
OccupationComboBox.DropDown
End Sub
Sub OccupationComboBox_Populate()
Dim arrIn As Variant, arrOut As Variant
Dim i As Long, j As Long
arrOccupation = Sheets("Occupation classes").Range("B2:B2000")
arrOccupationKeys = Sheets("Occupation classes").Range("C2:C2000")
arrOccupationCode = Sheets("Occupation classes").Range("A2:A2000")
ReDim arrCodeOut(1 To UBound(arrOccupation), 1 To 1)
ReDim arrOut(1 To UBound(arrOccupation), 1 To 1)
For i = 1 To UBound(arrOccupationKeys)
If LCase(CStr(arrOccupationKeys(i, 1))) Like "*" & LCase(OccupationComboBox.Text) & "*" Then
'If CStr(arrIn(i, 1)) Like OccupationComboBox.Text & "*" Then
j = j + 1
arrOut(j, 1) = arrOccupation(i, 1)
arrCodeOut(j, 1) = arrOccupationCode(i, 1)
End If
Next
OccupationComboBox.List = arrOut
Range("G18") = arrCodeOut(1, 1)
If Range("D18").Value = "" Then
Range("G18") = ""
End If
ActiveSheet.Calculate
End Sub
作为更新,文本框似乎也发生了同样的事情。选择文本框后,我开始输入,但在选择工作表中的另一个单元格之前,我无法看到输入的内容。在任何一种情况下都不能突出显示组合框或文本框中的文本
【问题讨论】: