简体   繁体   中英

My Range on Vlookup source worksheet says Nothing

This code line says = Nothing? Set SrcDataRange = Src.Range("A13:P" & LastRow)

It`s in a Vlookup code shown below. If there is a simpler way to write a Vlookup code please tell me? I used the same code as before but different workbooks and it worked??

 Private Sub Up_Date_Prices_Click()



  Application.ScreenUpdating = False

    Dim SrcOpen As Workbook
    Dim Des As Workbook
    Dim JCM As Worksheet
    Dim Src As Worksheet
    Dim FilePath As String
    Dim Filename As String
    Dim PLDataRange As Range
    Dim LastRow As Long

    FilePath = "\\TGS-SRV01\Share\ShopFloor\PRODUCTION\PURCHASING\"
    Filename = "TGS Group Inventory Sheet - Main.xlsx"

   
  
    Set SrcOpen = Workbooks.Open(FilePath & Filename)
    Set Src = SrcOpen.Worksheets("Part List")
    LastRow = Src.Cells(Src.Rows.Count, "A").End(xlUp).row
    Set SrcDataRange = Src.Range("A13:P" & LastRow)
    Windows("TGS Group Inventory Sheet - Main.xlsx").Visible = True
   
    Set Des = Workbooks("Automated Cardworker.xlsm")
    Set JCM = Des.Worksheets("Job Card Master")


    JCM.Range("O15").Value = Application.WorksheetFunction.VLookup(JCM.Range("D15"), SrcDataRange, 16, 0)

  
  
  Application.DisplayAlerts = False
  
   SrcOpen.Close
  
  
  Application.DisplayAlerts = True
        
  Application.ScreenUpdating = True


      End Sub

This row I think is wrong

LastRow = Src.Cells(PL.Rows.Count, "A").End(xlUp).row

PL is not set anywhere. Also the variable PLDataRange is never used. I guess you intend to set that somewhere?

I have Option Explicit turned on as default and it means you can never use undeclared variables

Let me know if this is helpful, thanks

I think this is answered here How to error handle 1004 Error with WorksheetFunction.VLookup?

In summary, if there is no match VLookup throws an error - if it is not this then check your last row: O15 your output is only 2 rows below A13 the first anchor to your input range so check that column P doesnt extend below row 14.

Some observations, JCM.Range("D15") might be better as JCM.Range("D15").value and also the final parameter is actually a boolean so might be better as False rather than zero. They may or may not have any effects here but it may be helpful to get into that habit: Little mistakes like these have cost me hours debugging in the past:)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM