【问题标题】:Excel/Visual Basic Error type mismatch run-time error 2147352571Excel/Visual Basic 错误类型不匹配运行时错误 2147352571
【发布时间】:2020-05-16 05:24:36
【问题描述】:

我在尝试获取“站点”组合框的值时收到此错误。下面是 Excel 工作表和错误消息的图像,以及发生错误的代码部分。任何帮助将不胜感激。谢谢!

(Screenshot of code)

硬编码 - Site.AddItem rstSite.Fields("mfg_site") 线上的错误

Private Sub Site_Enter()
    Dim stSQL As String
    Dim rstSite As ADODB.Recordset

    ' First remove any existing
    Site.Clear
    DoEvents
    ' Load Widget
    stSQL = "select distinct mfg_site from suserflds join sample on sample.sampno=suserflds.sampno" & _
        " where cast(coldate as date) between '" & DateValue(DateFrom) & "' and '" & DateValue(DateTo) & "'" & _
        " order by mfg_site "
    Set rstSite = con.Execute(stSQL)
    While Not rstSite.EOF
        Site.AddItem rstSite.Fields("mfg_site")
        rstSite.MoveNext
    Wend
    Set rstSite = Nothing
End Sub

【问题讨论】:

  • 出错时rstSite.Fields("mfg_site")的值是多少?
  • 出错时的值为NULL
  • 听起来值(Null)不允许用于“站点”。问 fpor 值是否有效 - 例如msgbox rstSite.Fields("mfg_site") ?您可以手动将 NULL 放入该字段吗?
  • 试试这个If Not IsNull(rstSite.Fields("mfg_site")) Then Site.AddItem rstSite.Fields("mfg_site")
  • 解决了问题,谢谢!!

标签: excel vba runtime-error type-mismatch


【解决方案1】:

出错时的值为 NULL – CShep878 11 mins ago

您不能添加空值。看这个例子

Private Sub CommandButton1_Click()
    ComboBox1.AddItem Null
End Sub

要处理 Null,请使用此

If Not IsNull(rstSite.Fields("mfg_site")) Then Site.AddItem rstSite.Fields("mfg_site")

关于NULL的有趣阅读

很容易将 null 和空白条目视为同一事物,但它们并不相等。术语“空”仅表示数据丢失或未知。这与说数据不存在不同,尽管它可能不存在。通常,空条目表示该值即将到来或有人仍在搜索数据。最终,您可能会发现数据对于该特定记录无效,但在达成共识之前,该值应保持为空。

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多