VBA在Excel 2010上运行,但在Excel 2013上出错

时间:2015-06-30 01:22:25

标签: vba excel-vba excel

我有我在Excel 2010上创建的代码,但是当我尝试在Excel 2013上运行它时,我得到一个运行时1004错误,调试器突出显示该行

 wbDest.Sheets(1).Name = cell.Value 

我认为2010年写的任何内容都适用于2013年。假设我是不正确的?有什么建议?

Private Sub CommandButton1_Click()

Const sColumn As String = "M"

Dim wbDest As Workbook
Dim rngFilter As Range, rngUniques As Range
Dim cell As Range

Set rngFilter = Range(sColumn & "1", Range(sColumn & Rows.Count).End(xlUp))

Application.ScreenUpdating = False

With rngFilter
    .AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Set rngUniques = Range(sColumn & "2", Range(sColumn & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
End With

For Each cell In rngUniques
    Set wbDest = Workbooks.Add(xlWBATWorksheet)
    rngFilter.AutoFilter Field:=1, Criteria1:=cell.Value
    rngFilter.EntireRow.Copy
    With wbDest.Sheets(1).Range("A1")
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteValuesAndNumberFormats
        .PasteSpecial xlPasteFormats
    End With
    Application.CutCopyMode = True
    wbDest.Sheets(1).Name = cell.Value
    Application.DisplayAlerts = False
    wbDest.SaveAs ThisWorkbook.Path & Application.PathSeparator & cell.Value & " " & Format(DateSerial(Year(Date), Month(Date) - 1, 1), "mm-yy")
    wbDest.Close False
    Application.DisplayAlerts = True
Next cell

rngFilter.Parent.AutoFilterMode = False
Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

尝试编辑此行:

Set rngUniques = Range(sColumn & "2", Range(sColumn & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible)

Set rngUniques = Range(sColumn & "2", sColumn & Cells(Rows.Count, "M").End(xlUp).Row).SpecialCells(xlCellTypeVisible)