函数调用导致类型13不匹配

鲍勃·麦西

如此接近完成一个大型项目,但似乎无法克服这种不匹配。任何帮助,将不胜感激。希望这不是太多信息...

获取.xlsx单张文件,并需要使用交叉引用表将信息添加到新书中的数据中,以获取营业日期和期间。这是源书的示例:

样本数据片段

我从@PGSystemTester那里获得了这段代码,作为一个vlookup解决方案,它使用一个日期从参考表中提取数据,该日期介于参考表上不同列的日期之间。

Function rngLOOKUP(chkDate As Date, rngf As Range, theColumn As Long) As Variant
Dim acell As Range

For Each acell In rngf.Columns(1).Cells
    If acell.Value <= chkDate And acell.Offset(0, 1).Value >= chkDate Then
        rngLOOKUP = acell.Offset(0, theColumn - 1).Value
        Exit Function
    End If
Next acell

rngLOOKUP = "#Nothing"

End Function

我已经搜索并尝试了数十种方法来设置日期格式,但无法克服类型不匹配的问题,并且开始怀疑是否实际上是日期问题所在:

这是交叉引用表的示例:

对照表样本

每次我使用此调用将结果分配给变量时,都会遇到运行时错误13,键入不匹配:

fYear = rngLOOKUP(aDate, rng, 3)

这是完整的代码。源文件是.xlsx,我将日期来自的单元格格式化后再将其分配给变量。

Sub CleanDaily_Labour()
'
' CleanDaily_Labour Macro
' RMDC Payroll Resarch (MU) Report prep
'


    Dim myPath, fName, refFILE, job, JobGR, DateST, WKDay, PDWK, fYear As String
    Dim CRef, wkb As Workbook
    Dim shtDATE, shtJOB, sht As Worksheet
    Dim aDate, fYR As Date
    Dim rngLOOKUP As Variant
    Dim rng, rngJOBS, rngJBGRP As Range
    Dim SC, lastRow, PD, WK As Long

    Application.ScreenUpdating = False
    myPath = Application.ActiveWorkbook.Path
'
' Get the file date and assign to variables
'
    Range("D3").Select
    Selection.NumberFormat = "yyyy-mm-dd"
    aDate = Range("D3").Value
    DateST = WorksheetFunction.Text(aDate, "YYYYMMDD")
    WKDay = WorksheetFunction.Text(aDate, "DDD")

    Selection.Copy
    Range("D7").Select
    ActiveSheet.Paste
'
' Rename and save the active workbook by date
' set wkb to new workbook name and assign calendar cross ref
'
    fName = myPath & "\Daily_Labour" _
        & DateST & ".xlsx"
    ActiveWorkbook.SaveAs fName, 51
    Set wkb = Workbooks.Open(fName)
    Set sht = wkb.Sheets("Sheet1")


    refFILE = myPath & "\Cross_Ref_fCalendar.xlsx"

'
' Remove extra header info
'
    Rows("1:5").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlUp
'
'   Insert Column to the left of Column D
'
    Columns("E:G").Insert Shift:=xlToRight, _
      CopyOrigin:=xlFormatFromRightOrBelow
'
' Update Headers that will be kept / used
'
    Range("A1").Value = "FYear"
    Range("E1").Value = "PD_WK"
    Range("J1").Value = "JOB_GRP"
    Range("F1").Value = "WKDay"
    Range("G1").Value = "PD"
    Range("H1").Value = "WK"
'
    Rows("1:1").Select
    With Selection
        .HorizontalAlignment = xlCenter
    End With
'
' Remove extra columns
'
    Sheets("Sheet1").Range("K:K,M:P,R:AY").EntireColumn.Delete
'
' Get the last row and fill known columns
'
    lastRow = Cells(Rows.Count, 1).End(xlUp).row
    Range("d2:d" & lastRow).Value = aDate
    'Range("d2:d" & lastRow).NumberFormat = "dd-mmm-yy" (commented as no impact on error, tried variantions here to overcome mismatch but should not matter as variable never changed here, just the range)
    Range("f2:f" & lastRow).Value = WKDay
'
' Set variables for next steps
'
    Set CRef = Workbooks.Open(refFILE)
    Set shtJOB = CRef.Sheets("JobCross")
    Set shtDATE = CRef.Sheets("fcalendar")
    sht.Activate
    Set rngJOBS = Range("i2:i" & lastRow)
    Set rngJBGRP = shtJOB.Range("A1:b16")
    Set rng = shtDATE.Range("A2:f210")
'
' Loop through jobs in column i match job in shtJOB
' put matching group in row j (Use Function vLookupVBA)
'
    For Each jRow In rngJOBS
        jRow.Select
        job = ActiveCell.Value
        JobGR = VLookupVBA(job, rngJBGRP, Null)
        ActiveCell.Offset(0, 1).Value = JobGR
    'end for
   Next jRow
'
'Save Progress during testing:
'
   Application.DisplayAlerts = False
   ActiveWorkbook.SaveAs fName, 51
'
' Fill in date parameters from Cross Ref file for Business date
' Use function rngLOOKUP to update variables then set ranges to the variables
' May be more efficient to get row number from cross ref table instead - later.
'
'    shtDATE.Activate (does not seem to affect)
'
    fYear = rngLOOKUP(aDate, rng, 3) '**This results in the error**
    PDWK = rngLOOKUP(aDate, rng, 6)
    PD = rngLOOKUP(aDate, rng, 4)
    WK = rngLOOKUP(aDate, rng, 5)
'
' Fill the columns with the variables (can likely bypass the variables and put on 1 line)- later
'
    Range("A2:A" & lastRow).Value = fYear
    Range("E2:E" & lastRow).Value = PDWK
    Range("G2:G" & lastRow).Value = PD
    Range("H2:H" & lastRow).Value = WK
'
' Cleanup, save and close workbooks
'
    Application.DisplayAlerts = False
    CRef.Close False
    wkb.SaveAs fName, 51
'
' SQL call: Load to existing datbase (GDrive), use same format as Transactions
' ?? Get sales by day? vs maintain PDWK
'
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True



End Sub
多米尼克

rngLOOKUP()期望第一个参数为Date,第二个参数为Range。但是,在每种情况下,您都要为其传递变量。因此,类型不匹配错误。例如,在您的代码中,您已声明aDate,如下所示...

Dim aDate, fYR As Date

这意味着将aDate视为变量,而不是Date,将fYR视为日期。因此,您需要按以下方式更改您的委托声明:

Dim aDate as Date, fYR As Date

与rng相同。而且,对于所有其他声明语句,它看起来都一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

fortran类型不匹配调用函数

来自分类Dev

尝试调用调用会导致“对象与目标类型不匹配”

来自分类Dev

异常类型的成员函数导致回调函数不匹配

来自分类Dev

将函数拆分为数组。类型不匹配错误#13

来自分类Dev

Haskell:函数组合导致类型不匹配错误

来自分类Dev

Haskell:函数组合导致类型不匹配错误

来自分类Dev

VBA类型不匹配(13)

来自分类Dev

类型不匹配错误#13

来自分类Dev

在结构内调用Boxed函数时,类型不匹配

来自分类Dev

vba Byref参数类型在调用函数时不匹配

来自分类Dev

在QTP中调用函数时类型不匹配

来自分类Dev

数据类型在函数调用中不匹配

来自分类Dev

在结构内调用Boxed函数时,类型不匹配

来自分类Dev

Excel VBA Target.Address被修改并导致错误13类型不匹配

来自分类Dev

带有数组的VBA Application.Index导致类型不匹配错误13

来自分类Dev

。在SearchDirection中查找变量将导致运行时错误13类型不匹配

来自分类Dev

从正在调用的函数调用函数时,VBA byref参数类型不匹配

来自分类Dev

反转范围会导致类型不匹配

来自分类Dev

是什么导致数组类型不匹配?

来自分类Dev

MS Access VBA:出现错误“ 13”:从其他形式调用函数时,键入不匹配

来自分类Dev

函数类型与函数定义不匹配

来自分类Dev

Scala-推断为错误的类型,导致类型不匹配?

来自分类Dev

Scala var类型用法导致类型不匹配

来自分类Dev

调用WinApi GetVersionExA函数时出错:错误A2114 INVOKE参数类型不匹配:参数:1

来自分类Dev

Haskell:函数组合的类型不匹配

来自分类Dev

重载函数的地址与所需类型不匹配

来自分类Dev

函数“递归返回”的“类型不匹配”

来自分类Dev

VBA函数结果类型不匹配

来自分类Dev

Haskell函数中的类型不匹配

Related 相关文章

  1. 1

    fortran类型不匹配调用函数

  2. 2

    尝试调用调用会导致“对象与目标类型不匹配”

  3. 3

    异常类型的成员函数导致回调函数不匹配

  4. 4

    将函数拆分为数组。类型不匹配错误#13

  5. 5

    Haskell:函数组合导致类型不匹配错误

  6. 6

    Haskell:函数组合导致类型不匹配错误

  7. 7

    VBA类型不匹配(13)

  8. 8

    类型不匹配错误#13

  9. 9

    在结构内调用Boxed函数时,类型不匹配

  10. 10

    vba Byref参数类型在调用函数时不匹配

  11. 11

    在QTP中调用函数时类型不匹配

  12. 12

    数据类型在函数调用中不匹配

  13. 13

    在结构内调用Boxed函数时,类型不匹配

  14. 14

    Excel VBA Target.Address被修改并导致错误13类型不匹配

  15. 15

    带有数组的VBA Application.Index导致类型不匹配错误13

  16. 16

    。在SearchDirection中查找变量将导致运行时错误13类型不匹配

  17. 17

    从正在调用的函数调用函数时,VBA byref参数类型不匹配

  18. 18

    反转范围会导致类型不匹配

  19. 19

    是什么导致数组类型不匹配?

  20. 20

    MS Access VBA:出现错误“ 13”:从其他形式调用函数时,键入不匹配

  21. 21

    函数类型与函数定义不匹配

  22. 22

    Scala-推断为错误的类型,导致类型不匹配?

  23. 23

    Scala var类型用法导致类型不匹配

  24. 24

    调用WinApi GetVersionExA函数时出错:错误A2114 INVOKE参数类型不匹配:参数:1

  25. 25

    Haskell:函数组合的类型不匹配

  26. 26

    重载函数的地址与所需类型不匹配

  27. 27

    函数“递归返回”的“类型不匹配”

  28. 28

    VBA函数结果类型不匹配

  29. 29

    Haskell函数中的类型不匹配

热门标签

归档