【问题标题】:Excel ComboBox - typed text not displaying until focus lost from comboboxExcel ComboBox - 在组合框失去焦点之前不显示键入的文本
【发布时间】: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

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

【问题讨论】:

    标签: excel vba combobox


    【解决方案1】:

    事实证明,有时存在与多个监视器有关的错误。

    将我的电脑的投影模式更改为这个屏幕后,一切都按预期工作。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-08
        • 1970-01-01
        相关资源
        最近更新 更多