当用户在组合框中输入无效项目时收到警告消息

get warning message when a user enters invalid item in a combo box

我在用户表单中有一个组合框。它包含下拉列表中的项目(日期)列表。但用户也可以输入一个项目。如果该条目与组合框列表项(在 excel sheet 中)匹配,则它应该允许,否则它应该给出警告消息 "invalid entry"。

现在,只要我输入一个数字,就会出现 运行 时间错误(运行 时间错误 13,类型不匹配)。如何用用户友好的消息框替换 运行time 错误。

Private Sub ComboBox1_Change()

    Dim sl As Double
    Dim by As Double
    Dim lrange As Range
    Set lrange = Workbooks("abc").Worksheets("TL-USD").Range("O2") 

    lrange.Value = ComboBox1.Value

    sl = Workbooks("abc").Worksheets("TL-USD").Range("P2").Value ~~getting error here~~
    by = Workbooks("abc").Worksheets("TL-USD").Range("Q2").Value


    Sell.Caption = "Sell 1 $ in " & sl & " TL"
    Buy.Caption = "Buy 1 $ in " & by & " TL"

End Sub

单元格 P2 和 Q2 具有 vlookup 公式,可从 sheet 中的 table 中提取该日期的相关汇率。有没有办法用用户输入的日期检查日期列,如果它与任何日期匹配,则允许输入,否则发出消息。

非常感谢任何帮助。

您没有问我与必须进行验证的列相关的问题...下一个代码假设所讨论的列是 B:B。如果不是,请调整相应列的代码。它通过检查相应范围内是否存在 ComboBox1.Value 来验证输入:

Private Sub ComboBox1_Change()
    Dim shTL As Worksheet, sl As Double, by As Double, rngSearch As Range
    Dim lrange As Range, lastRow As Long

    Set shTL = ActiveSheet ' Workbooks("abc").Worksheets("TL-USD")
    Set lrange = shTL.Range("O2")
    lastRow = shTL.Range("B" & Rows.Count).End(xlUp).row
    Set rngSearch = shTL.Range("B2:B" & lastRow)

     'validate the combo entry:
     If IsValid(CDbl(ComboBox1.Value), rngSearch) Then
        lrange.Value = ComboBox1.Value
     Else
        MsgBox "The enered value in Combo (""" & ComboBox1.Value & _
                """) could not be found in range """ & rngSearch.address & """."
        Exit Sub
     End If

    sl = shTL.Range("P2").Value ' ~~ Not getting error here (I hope...)~~
    by = shTL.Range("Q2").Value


    Sell.Caption = "Sell 1 $ in " & sl & " TL"
    Buy.Caption = "Buy 1 $ in " & by & " TL"
End Sub

Function IsValid(strSearch As Double, rngSearch As Range) As Boolean
   Dim c As Range
   For Each c In rngSearch
        If CDbl(c.Value) = strSearch Then IsValid = True: Exit Function
   Next
End Function