Date 解决日期上的类型不匹配问题

Date 解决日期上的类型不匹配问题,date,excel,vba,Date,Excel,Vba,我正在尝试运行下面的代码。在我尝试添加日期参数之前,它运行得非常好。我得到一个类型不匹配错误。我已经尝试了它与'单引号与相同的错误。“局部变量”窗口将两个日期变量显示为variant/string,我认为这是正确的。任何帮助都将不胜感激!有些东西很容易弄明白,有些让我头疼 Sub Macro2() ' ' Macro2 Macro ' ' Dim b_date Dim e_date b_date = Format(Range("Beg_Date"), "mm/dd/yyyy") e_date

我正在尝试运行下面的代码。在我尝试添加日期参数之前,它运行得非常好。我得到一个类型不匹配错误。我已经尝试了它与'单引号与相同的错误。“局部变量”窗口将两个日期变量显示为variant/string,我认为这是正确的。任何帮助都将不胜感激!有些东西很容易弄明白,有些让我头疼

Sub Macro2()
'
' Macro2 Macro
'

'
Dim b_date
Dim e_date
b_date = Format(Range("Beg_Date"), "mm/dd/yyyy")
e_date = Format(Range("End_Date"), "mm/dd/yyyy")
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=SQLOLEDB.1;Password=********;Persist Security Info=True;User     ID=SqlLinkServer;Initial Catalog=SPFT;Data Source=001MSDSQL" _
        , _
        "01;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=001MSDSTS02;Use Encryption for Data=False;Tag with column collation when possible=False"), _
        Destination:=Range("$a$7")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("/*AccountTransactions Current Financials Journal**/ select [Journal Entry], [TRX Date], [Account Number], [Acc" _
        , _
        "ount Description], [Debit Amount], [Credit Amount], [Source Document], [User Who Posted] from AccountTransactions where [TRX Date] >= #" & b_date & "# and [TRX  Date] <= #" & e_date & "# and [segment4] = '" & Range("Segment4").Value & "'  and [segment1] = '" & Range("Segment1").Value & "' and [segment2] = '" & Range("Segment2").Value & "' and [segment3] = '" & Range("Segment3").Value & "' and [Histo" _
        , "ry TRX] = 'No' order by [Journal Entry]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_ExternalData_13"
        .Refresh BackgroundQuery:=False
    End With
End Sub
我想试试这个:

"...[TRX Date] >= '" & Format(b_date, "yyyy-mm-dd")  & "'... "

如果上述格式不正确,请更改为另一种格式,具体取决于地区。

因为b_日期和e_日期都是变量类型,在这种情况下,看起来您想要的是字符串类型的东西,或者很容易转换为字符串类型,以便进行插值。如果尝试使用CStr在插值中包装这些变量,会发生什么情况?添加CStr仍然会导致类型不匹配错误@Dan Wagner您在哪里定义Beg_日期和End_日期?它们是指电子表格中特定单元格的范围名称。我将它们放在有问题的行中,得到了相同的结果。它不会像我在变量语句本身中所做的那样做同样的事情吗@avb你能在代码执行后发布你的.CommandText值吗?+1好主意@avb-一般来说,也许在别处以分段方式组装该字符串会更容易,以便进行故障排除?@avb我不知道该怎么做。我认为类型不匹配会阻止代码行完全执行,因此它没有任何价值。@Dan Wagner也许。在我添加日期范围规范之前,它可以完美地执行,因此我知道日期是问题所在。我试图查询一个大平原数据库,我的研究让我相信日期应该以字符串形式发送,我想我这样做了,但没有用。