类型不匹配VBA中的运行时错误-13(在日期变量处显示错误)

时间:2017-03-06 12:04:56

标签: excel-vba vba excel

我在

收到错误
  

Dim strDate As Date

作为类型不匹配运行时错误..

请任何帮助将不胜感激....

Sub Insert11()

    'click on tools and select Microsoft ActiveX data Objects 2.0 Library
    Dim DBFullName As String
    Dim Connect As String, Source As String
    Dim Connection As ADODB.Connection
    Dim Recordset As ADODB.Recordset
    Dim Col As Integer
    Dim strDate As Date
    Dim strWeight As Variant
    Dim strMed_Id As Variant
    Dim strGlucose As Variant

    strDate = InsertForm.TextBox1.Value
    strWeight = InsertForm.TextBox2.Value
    strMed_Id = InsertForm.ListBox2.Value
    strGlucose = InsertForm.TextBox3.Value

    ' InsertForm.Show
    Cells.Clear

    'Database path info
    DBFullName = "C:\Users\ND5036832\Downloads\Assignment1234\Sample1.accdb"

    'open the connection
    Set Connection = New ADODB.Connection
    Connect = "Provider=Microsoft.ACE.OLEDB.12.0;"
    Connect = Connect & "Data Source=" & DBFullName & ";"
    Connection.Open ConnectionString:=Connect

    'Create RecordSet
    Set Recordset = New ADODB.Recordset
    With Recordset
        'filter Data
        Source = "Insert into Glucose ([Date],Weight, Med_Id,Glucose) values ( " & strDate & "," & strWeight & "," & strMed_Id & "," & strGlucose & ");"
        .Open Source:=Source, ActiveConnection:=Connection
        'Msgbox " The query:" & vbNewLine & vbNewLine & Source
        'Write field names
        For Col = 0 To Recordset.Fields.Count - 1
            Range("G1").Offset(0, Col).Value = Recordset.Fields(Col).Name
        Next
        'Write recordset
        'Range("G1").Offset(1, 0).CopyFromRecordset Recordset
    End With
    ActiveSheet.Columns.AutoFit

    Set Recordset = Nothing
    Connection.Close
    Set Connection = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

好吧,close包含TextBox(称为Text)。如果您尝试将String放入String变量,那么我不会对您收到错误感到惊讶。尝试:

Date

将您的字符串转换或转换到日期。如果你不以日期格式给它一个字符串,它将再次抛出错误。

<小时/> 的 此外 即可。注意如何命名变量。 strDate = CDate(InsertForm.TextBox1.Value) 有&#34; str&#34;在开始时提醒您,您正在处理strDate,因此您希望看到这一点:

String

由于您的变量将采用Dim strDate As String 格式,因此请考虑将其重命名为:

Date

或者更好的是,忽略这个匈牙利风格的命名约定,并将其命名为具有更多含义的内容,例如:

Dim dtDate As Date