Subscript out of range error in this Excel VBA script

前端 未结 3 1489
南旧
南旧 2020-12-20 03:44

I would like to copy data from a CSV file into an Excel worksheet. There are 11 .csv files. So far I have this (it is a modified version from a previous post):



        
3条回答
  •  有刺的猬
    2020-12-20 04:24

    Private Sub CommandButton1_Click()
    
        Dim Data As Object, Employee As Object
    
        Application.ScreenUpdating = False
    
        Set Data = ThisWorkbook.Sheets("Data")
    
        Set Employee = ThisWorkbook.Sheets("Employee Names")
    
        Data.Range("AK1").Value = "Lookup"
    
        Data.Range("AK2:AK" & Data.Range("A1").End(xlDown).Row).Formula = "=VLOOKUP(E2,'Employee Names'!$A:$A,1,0)"
    
        Data.Range("AK2:AK" & Data.Range("A1").End(xlDown).Row).Value = Data.Range("AK2:AK" & Data.Range("A1").End(xlDown).Row).Value
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=5, Criteria1:="<>"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=37, Criteria1:="#N/A"
    
        Application.DisplayAlerts = False
    
        Data.AutoFilter.Range.Offset(1, 0).Rows.SpecialCells(xlCellTypeVisible).Delete (xlShiftUp)
    
        Data.Range("AK:AK").Delete
    
        Data.AutoFilterMode = False
    
        'Selection.AutoFilter
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=7, Criteria1:="="
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=12, Criteria1:="<>"
    
        Worksheets("Data").Range("A1:AK" & Data.Range("A1").End(xlDown).Row).Copy
    
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "DrfeeRequested"
    
        Set Dr = ThisWorkbook.Worksheets("DrfeeRequested")
    
        Dr.Range("A1").PasteSpecial Paste:=xlPasteValues
    
        Application.CutCopyMode = False
    
        Data.AutoFilterMode = False
    
        'DrfeeRequested.AutoFilterMode = False
    
        Selection.AutoFilter
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=13, Criteria1:="<>"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).Copy
    
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "RateLockfollowup"
        Set Ratefolup = ThisWorkbook.Worksheets("RateLockfollowup")
    
        Ratefolup.Range("A1").PasteSpecial Paste:=xlPasteValues
    
        Application.CutCopyMode = False
    
        Data.AutoFilterMode = False
    
        Selection.AutoFilter
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=19, Criteria1:="="
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=13, Criteria1:="<>"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).Copy
    
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Lockedlefollowup"
        Set Lockfolup = ThisWorkbook.Worksheets("Lockedlefollowup")
    
        Lockfolup.Range("A1").PasteSpecial Paste:=xlPasteValues
    
        Application.CutCopyMode = False
    
        Data.AutoFilterMode = False
    
        Selection.AutoFilter
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=19, Criteria1:="="
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).Copy
    
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Hoifollowup"
    
        Set Hoifolup = ThisWorkbook.Worksheets("Hoifollowup")
    
        Hoifolup.Range("A1").PasteSpecial Paste:=xlPasteValues
    
        Application.CutCopyMode = False
    
        Data.AutoFilterMode = False
    
        Selection.AutoFilter
    
        TodayDT = Format(Now())
    
        Weekdy = Weekday(Now())
    
        If Weekdy = 2 Then
           LastTwoDays = Now() - Weekday(Now(), 3)
        ElseIf Weekdy = 3 Then
           LastTwoDays = Now() - Weekday(Now(), 3)
        ElseIf Weekdy = 4 Then
           LastTwoDays = Now() - Weekday(Now(), 3)
        ElseIf Weekdy = 5 Then
           LastTwoDays = Now() - Weekday(Now(), 3)
        ElseIf Weekdy = 6 Then
           LastTwoDays = Now() - Weekday(Now(), 3)
        Else
           MsgBox "Today Satuarday OR Sunday Data is not Available"
        End If
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=12, Criteria1:="="
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=11, Criteria1:="<>"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=11, Criteria1:=" TodayDT", Operator:=xlAnd, Criteria2:="LastTwoDays"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).Copy
    
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "DRfeefollowup"
    
        Set Drfreefolup = ThisWorkbook.Worksheets("DRfeefollowup")
    
        Drfreefolup.Range("A1").PasteSpecial Paste:=xlPasteValues
    
        Application.CutCopyMode = False
    
        Data.AutoFilterMode = False
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=15, Criteria1:="yes"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=19, Criteria1:="x"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=12, Criteria1:="<>"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=13, Criteria1:="<>"
    
        'Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).AutoFilter Field:=14, criterial:="<>"
    
        Data.Range("A1:AK" & Data.Range("A1").End(xlDown).Row).Copy
    
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Drworkblefiles"
    
        Set Drworkblefiles = ThisWorkbook.Worksheets("Drworkblefiles")
    
        Drworkblefiles.Range("A1").PasteSpecial Paste:=xlPasteValues
    
        Application.CutCopyMode = False
    
        Data.Range("A1").AutoFilter
    
       End Sub
    
     Private Sub CommandButton2_Click()
    
    
        Sheets("Data").Range("A1:AJ" & Sheets("Data").Range("A1").End(xlDown).Row).Clear
    
        MsgBox "Please paste new data in data sheet"
    
    
    End Sub
    

提交回复
热议问题