首页 > 解决方案 > 使用 LastSaved 函数时,VBA 在某些项目(但不是其他项目)上接收 ByRef 参数类型不匹配

问题描述

我正在尝试编写一个脚本,该脚本将列出最后一次保存每六个输入模板的最后时间/日期。前 4 个似乎工作正常,但是当我到达第 5 个和第 6 个(TemplateWB1 和 TemplateWB2)时,我收到以下错误:“编译错误:ByRef 参数类型不匹配”

我无法弄清楚为什么其中一些有效,而其他一些则无效..?我已经检查并重新检查了几次文件路径,它们是正确的。

Sub RefreshSaveDateTimes()
    Dim DateWBpath As String
    Dim DistWBpath As String
    Dim prdWBpath As String
    Dim sparkUPCitemWBpath As String
    Dim myDate As Date
    Dim menuMenuWS As Worksheet
    Dim TemplateWB1, TemplateWB2 As String

    Set menuMenuWS = ActiveWorkbook.Worksheets("Menu")

    DateWBpath = "P:\CPW Planning Tool\DataSources\DateTable.xlsx"
    DistWBpath = "P:\CPW Planning Tool\Input Templates\Confections\Confections Distribution Inputs.xlsm"
    prdWBpath = "P:\CPW Planning Tool\Input Templates\Confections\Confections PRD Inputs.xlsm"
    sparkUPCitemWBpath = "P:\CPW Planning Tool\Input Templates\Confections\Confections Spark UPC Item Table.xlsx"
    TemplateWB1 = "P:\CPW Planning Tool\Input Templates\Confections\Forecast Template 1 - Confy.xlsm"
    TemplateWB2 = "P:\CPW Planning Tool\Input Templates\Confections\Forecast Template 2 - Confy.xlsm"

    myDate = LastSaved(DateWBpath)
        menuMenuWS.Cells(2, 3).Select
        ActiveCell.Value = myDate

    myDate = LastSaved(sparkUPCitemWBpath)
        menuMenuWS.Cells(3, 3).Select
        ActiveCell.Value = myDate

    myDate = LastSaved(prdWBpath)
        menuMenuWS.Cells(4, 3).Select
        ActiveCell.Value = myDate

    myDate = LastSaved(DistWBpath)
        menuMenuWS.Cells(5, 3).Select
        ActiveCell.Value = myDate

    myDate = LastSaved(TemplateWB1)
        menuMenuWS.Cells(6, 3).Select
        ActiveCell.Value = myDate

    myDate = LastSaved(TemplateWB2)
        menuMenuWS.Cells(7, 3).Select
        ActiveCell.Value = myDate

End Sub

标签: vbaexcel

解决方案


只是因为当你写这个时:

Dim TemplateWB1, TemplateWB2 As String

TemplateWB1实际上被声明为 a Variant,而不是 a String。您必须为每个变量指定类型:

Dim TemplateWB1 As String, TemplateWB2 As String

推荐阅读