Excel ComboBox - 直到从组合框失去焦点时才显示键入的文本

Excel ComboBox - typed text not displaying until focus lost from combobox

我有一个组合框,在您键入时,下拉列表会动态填充与键入的输入相匹配的结果。

我面临的问题是,当您在组合框中键入内容时,您看不到您键入的内容。在下图中,您可以看到有一个带有“Build”的单元格 - 这是我临时设置为显示输入内容的链接单元格。

上面单元格和列表之间的白框是我输入的地方。但是正如您所见,没有文字可见。

单击 sheet 上的其他位置后,会出现键入的文本

我想要发生的事情(而且我确定曾经发生过)是,当我在组合框中键入文本时,应该在键入时显示正在键入的内容。

假设这与我设置的 vba 代码有关,我已将其复制到下方以及组合框的属性。

搜索了几个小时后,我还没有找到相关的 post 或解决此问题的方法。

    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

作为更新,文本框似乎也发生了同样的事情。在 select 输入文本框后我开始输入,但我无法看到输入的内容,直到我 select 工作中的另一个单元格 sheet 。在任何一种情况下都不能突出显示组合框或文本框中的文本

事实证明,有时会出现与多台显示器相关的错误。

将我电脑的投影模式更改为该屏幕后,一切正常。

如果您遇到同样的问题,请尝试

  • 将您正在使用的 s/s 拖到您的 1 号显示器或
  • 将您的投影模式更改为仅此屏幕

非常感谢。我从来没有想过这个问题与多台显示器有关。顺便一提。这可以通过对两个显示器使用相同的“缩放比例”来解决(例如 125%)。