Search code examples
excelvba

Excel VBA Compile Error: Type Mismatch, but line above is similar without error


I am getting a Type Mismatch error where .Row is highlighted and I cannot figure out why this is happening. I commented the line that has the error. The line of code above this is similar but not generating the error message. These a ranges that vary in size from day to day. I am not sure if the problem is with the declaration or the the range itself. I tried adding a "+1+ and a "-1" after .Row, but I received the same error message. Any help is appreciated.

    Sub DDS_SUMIFS()
    '
    ' DDS_SUMIFS Macro
    '
    
    '
       ' ActiveCell.FormulaR1C1 = _
            "=SUMIFS('Raw Data - DS'!R2C6:R14664C6,'Raw Data - DS'!R2C1:R14664C1,'Dock Door Status'!RC5,'Raw Data - DS'!R2C8:R14664C8,'Dock Door Status'!R32C)"
       ' ActiveCell.Select
        'Selection.AutoFill Destination:=ActiveCell.Range("A1:C1"), Type:= _
            xlFillDefault
       ' ActiveCell.Range("A1:C1").Select
        'Selection.AutoFill Destination:=ActiveCell.Range("A1:C10"), Type:= _
            xlFillDefault
        'ActiveCell.Range("A1:C10").Select
        'ActiveCell.Offset(1, 0).Range("A1").Activate
        
    Dim DSQTY As Range
Dim NSQTY As Long
Dim DSDestWH, NSDestWH, DSWorkPool, NSWorkPool As Range
Dim RDDS, RDNS As Worksheet
Dim ABQ1, BFI4, CLE2, DEN3, DEN4, GEG1, LIT1, ORD5, ORF3, PAE2, PCW1, PDX9, SLC1, SMF1 As String

Set RDDS = Sheets("Raw Data - DS")
Set RDNS = Sheets("Raw Data - NS")

Set DSQTY = RDDS.Range("F2").End(xlUp).Row
Set NSQTY = RDNS.Range("F2").End(xlUp).Row    '<----- Error: Object Required (NSQTY = is highlighted)
    
    Set DSDestWH = RDDS.Range("A2").End(xlUp).Row
    Set NSDestWH = RDNS.Range("A2").End(xlUp).Row
    Set DSWorkPool = RDDS.Range("F2").End(xlUp).Row
    Set NSWorkPool = RDNS.Range("F2").End(xlUp).Row
    
    ABQ1 = "ABQ1"
    BFI4 = "BFI4"
    CLE2 = "CLE2"
    DEN3 = "DEN3"
    DEN4 = "DEN4"
    GEG1 = "GEG1"
    LIT1 = "LIT1"
    ORD5 = "ORD5"
    ORF3 = "ORF3"
    PAE2 = "PAE2"
    PCW1 = "PCW1"
    PDX9 = "PDX9"
    SLC1 = "SLC1"
    SMF1 = "SMF1"
    
    ' PNYP Column
    
    Range("H33") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ABQ1, DSWorkPool, "PNYP")
    Range("H34") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, BFI4, DSWorkPool, "PNYP")
    Range("H35") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, CLE2, DSWorkPool, "PNYP")
    Range("H36") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, DEN3, DSWorkPool, "PNYP")
    Range("H37") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, DEN4, DSWorkPool, "PNYP")
    Range("H38") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, GEG1, DSWorkPool, "PNYP")
    Range("H39") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, LIT1, DSWorkPool, "PNYP")
    Range("H40") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ORD5, DSWorkPool, "PNYP")
    Range("H41") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ORF3, DSWorkPool, "PNYP")
    Range("H42") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, PAE2, DSWorkPool, "PNYP")
    Range("H43") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, PCW1, NSWorkPool, "PNYP")
    Range("H44") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, PDX9, NSWorkPool, "PNYP")
    Range("H45") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, SLC1, NSWorkPool, "PNYP")
    Range("H46") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, SMF1, NSWorkPool, "PNYP")
    
    ' PP Column
    
    Range("H33") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ABQ1, DSWorkPool, "PP")
    Range("H34") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, BFI4, DSWorkPool, "PP")
    Range("H35") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, CLE2, DSWorkPool, "PP")
    Range("H36") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, DEN3, DSWorkPool, "PP")
    Range("H37") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, DEN4, DSWorkPool, "PP")
    Range("H38") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, GEG1, DSWorkPool, "PP")
    Range("H39") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, LIT1, DSWorkPool, "PP")
    Range("H40") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ORD5, DSWorkPool, "PP")
    Range("H41") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ORF3, DSWorkPool, "PP")
    Range("H42") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, PAE2, DSWorkPool, "PP")
    Range("H43") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, PCW1, NSWorkPool, "PP")
    Range("H44") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, PDX9, NSWorkPool, "PP")
    Range("H45") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, SLC1, NSWorkPool, "PP")
    Range("H46") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, SMF1, NSWorkPool, "PP")
    
    ' LD Column
    
    Range("H33") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ABQ1, DSWorkPool, "LD")
    Range("H34") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, BFI4, DSWorkPool, "LD")
    Range("H35") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, CLE2, DSWorkPool, "LD")
    Range("H36") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, DEN3, DSWorkPool, "LD")
    Range("H37") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, DEN4, DSWorkPool, "LD")
    Range("H38") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, GEG1, DSWorkPool, "LD")
    Range("H39") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, LIT1, DSWorkPool, "LD")
    Range("H40") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ORD5, DSWorkPool, "LD")
    Range("H41") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, ORF3, DSWorkPool, "LD")
    Range("H42") = WorksheetFunction.SumIfs(DSQTY, DSDestWH, PAE2, DSWorkPool, "LD")
    Range("H43") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, PCW1, NSWorkPool, "LD")
    Range("H44") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, PDX9, NSWorkPool, "LD")
    Range("H45") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, SLC1, NSWorkPool, "LD")
    Range("H46") = WorksheetFunction.SumIfs(NSQTY, NSDestWH, SMF1, NSWorkPool, "LD")
    
    End Sub

Solution

  • Something like this:

    Dim DSQTY As Range, NSQTY As Range
    Dim DSDestWH As Range, NSDestWH As Range
    Dim DSWorkPool As Range, NSWorkPool As Range
    Dim RDDS As Worksheet, RDNS As Worksheet
    ' Each variable must be declared separately unless they are of type Variant
    ' ... next lines of your code
    With RDDS
        Set DSQTY = .Range("F2", .Cells(.Rows.Count, "F").End(xlUp))
        Set DSDestWH = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp))
        Set DSWorkPool = .Range("F2", .Cells(.Rows.Count, "F").End(xlUp))
    End With
    
    With RDNS
        Set NSQTY = .Range("F2", .Cells(.Rows.Count, "F").End(xlUp))
        Set NSDestWH = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp))
        Set NSWorkPool = .Range("F2", .Cells(.Rows.Count, "F").End(xlUp))
    End With
    
    ' ... next lines of your code
    

    Are you sure that DSQTY and DSWorkPool are in the same column?
    And also NSQTY and NSWorkPool?