将整列(基于特定标题)从一张工作表复制到另一张工作表(以其他顺序)在Excel 365上不起作用

将整列(基于特定标题)从一张工作表复制到另一张工作表(以其他顺序)在Excel 365上不起作用,excel,vba,Excel,Vba,有一个我无法独自克服的问题: 下面的代码在运行Excel 2013 Pro(32位)的Win 8.1上运行良好。它在使用Excel365(也是32位)的Win10上惨败 VBA控制台以蓝色突出显示我分配给列(SRO、Desc、Status、Project等)的名称,以黄色突出显示“Private Sub Generate()” Private Sub Generate() Application.EnableEvents = False Application.ScreenUp

有一个我无法独自克服的问题:

下面的代码在运行Excel 2013 Pro(32位)的Win 8.1上运行良好。它在使用Excel365(也是32位)的Win10上惨败

VBA控制台以蓝色突出显示我分配给列(SRO、Desc、Status、Project等)的名称,以黄色突出显示“Private Sub Generate()”

Private Sub Generate()

    Application.EnableEvents = False
    Application.ScreenUpdating = False

        ActiveWorkbook.Sheets("Imported Data").Activate

'tis where You select what columns You want to copy and name them

            SRO = WorksheetFunction.Match("SroNum", Rows("1:1"), 0)
            Desc = WorksheetFunction.Match("Description", Rows("1:1"), 0)
            Status = WorksheetFunction.Match("Status", Rows("1:1"), 0)
            Project = WorksheetFunction.Match("srouf_platform", Rows("1:1"), 0)
            SROlead = WorksheetFunction.Match("Name", Rows("1:1"), 0)
            OpenDate = WorksheetFunction.Match("CreateDate", Rows("1:1"), 0)
            CloseDate = WorksheetFunction.Match("Close Date", Rows("1:1"), 0)
            TPT = WorksheetFunction.Match("SroTPTinDays", Rows("1:1"), 0)
            STATUSnew = WorksheetFunction.Match("srouf_intel_sro_status", Rows("1:1"), 0)
            WRKstat = WorksheetFunction.Match("Status Code", Rows("1:1"), 0)
            OpCode = WorksheetFunction.Match("OperationCode", Rows("1:1"), 0)
            Priority = WorksheetFunction.Match("Priority Code", Rows("1:1"), 0)
            OpPartner = WorksheetFunction.Match("OperationPartnerName", Rows("1:1"), 0)
            DUT = WorksheetFunction.Match("LineSerialNum", Rows("1:1"), 0)
            OpDesc = WorksheetFunction.Match("OperationDescription", Rows("1:1"), 0)
            OpStatus = WorksheetFunction.Match("OperationStatus", Rows("1:1"), 0)
            CreatedBy = WorksheetFunction.Match("CreatedBy", Rows("1:1"), 0)


'adding new sheet - CROPPED DATA
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Cropped Data"

'tis where You copy selected columns to CROPPED DATA in specific A-Q order
            Sheets("Imported Data").Columns(SRO).Copy Destination:=Sheets("Cropped Data").Range("A1")
            Sheets("Imported Data").Columns(Desc).Copy Destination:=Sheets("Cropped Data").Range("B1")
            Sheets("Imported Data").Columns(Status).Copy Destination:=Sheets("Cropped Data").Range("C1")
            Sheets("Imported Data").Columns(Project).Copy Destination:=Sheets("Cropped Data").Range("D1")
            Sheets("Imported Data").Columns(SROlead).Copy Destination:=Sheets("Cropped Data").Range("E1")
            Sheets("Imported Data").Columns(OpenDate).Copy Destination:=Sheets("Cropped Data").Range("F1")
            Sheets("Imported Data").Columns(CloseDate).Copy Destination:=Sheets("Cropped Data").Range("G1")
            Sheets("Imported Data").Columns(TPT).Copy Destination:=Sheets("Cropped Data").Range("H1")
            Sheets("Imported Data").Columns(STATUSnew).Copy Destination:=Sheets("Cropped Data").Range("I1")
            Sheets("Imported Data").Columns(WRKstat).Copy Destination:=Sheets("Cropped Data").Range("J1")
            Sheets("Imported Data").Columns(Priority).Copy Destination:=Sheets("Cropped Data").Range("K1")
            Sheets("Imported Data").Columns(CreatedBy).Copy Destination:=Sheets("Cropped Data").Range("L1")
            Sheets("Imported Data").Columns(OpPartner).Copy Destination:=Sheets("Cropped Data").Range("M1")
            Sheets("Imported Data").Columns(DUT).Copy Destination:=Sheets("Cropped Data").Range("N1")
            Sheets("Imported Data").Columns(OpCode).Copy Destination:=Sheets("Cropped Data").Range("O1")
            Sheets("Imported Data").Columns(OpDesc).Copy Destination:=Sheets("Cropped Data").Range("P1")
            Sheets("Imported Data").Columns(OpStatus).Copy Destination:=Sheets("Cropped Data").Range("Q1")

End Sub
我得到的错误是:

隐藏模块中的编译错误:生成

还有其他选择吗? 我应该如何重新措辞,才能让excel 365工作? 我需要这个代码是尽可能轻-吨的数据正在处理


任务是:在工作表“导入的数据”中找到特定的标题列,并将它们复制到新工作表“裁剪的数据”中,但顺序不同(不是全部!)。

有两种情况会导致此问题:

  • 在Excel 365中,“SRO”是一个预定义的常量,因此我需要将其更改为SR0
  • Excel 365需要使用DIM预定义所有值(如SR0、Descpt、Stats等)(就这么简单):
  • 希望这对其他人有所帮助:)

    p.S.工作表中的列(“导入的数据”)通常是随机顺序的(一天“SroNum”列可能在A列,另一天可能在B列,等等-因此我使用了worksheetfunction.match
    Private Sub Generate2()
    
    'warning! it's ZERO in all SR0, not O!
            Dim SR0 As Double
            Dim Descpt As Double
            Dim Stats As Double
            Dim Project As Double
            Dim SR0lead As Double
            Dim OpenDate As Double
            Dim CloseDate As Double
            Dim TPT As Double
            Dim STATUSnew As Double
            Dim WRKstat As Double
            Dim OpCode As Double
            Dim Priority As Double
            Dim OpPartner As Double
            Dim DUT As Double
            Dim OpDesc As Double
            Dim OpStatus As Double
            Dim CreatedBy As Double
    
                Application.EnableEvents = False
                Application.ScreenUpdating = False
    
                    ActiveWorkbook.Sheets("Imported Data").Activate
    
    'tis where You select what columns You want to copy and name them
                SR0 = Application.WorksheetFunction.Match("SroNum", Rows("1:1"), 0)
                Descpt = WorksheetFunction.Match("Description", Rows("1:1"), 0)
                Stats = WorksheetFunction.Match("Status", Rows("1:1"), 0)
                Project = WorksheetFunction.Match("srouf_platform", Rows("1:1"), 0)
                SR0lead = WorksheetFunction.Match("Name", Rows("1:1"), 0)
                OpenDate = WorksheetFunction.Match("CreateDate", Rows("1:1"), 0)
                CloseDate = WorksheetFunction.Match("Close Date", Rows("1:1"), 0)
                TPT = WorksheetFunction.Match("SroTPTinDays", Rows("1:1"), 0)
                STATUSnew = WorksheetFunction.Match("srouf_intel_sro_status", Rows("1:1"), 0)
                WRKstat = WorksheetFunction.Match("Status Code", Rows("1:1"), 0)
                OpCode = WorksheetFunction.Match("OperationCode", Rows("1:1"), 0)
                Priority = WorksheetFunction.Match("Priority Code", Rows("1:1"), 0)
                OpPartner = WorksheetFunction.Match("OperationPartnerName", Rows("1:1"), 0)
                DUT = WorksheetFunction.Match("LineSerialNum", Rows("1:1"), 0)
                OpDesc = WorksheetFunction.Match("OperationDescription", Rows("1:1"), 0)
                OpStatus = WorksheetFunction.Match("OperationStatus", Rows("1:1"), 0)
                CreatedBy = WorksheetFunction.Match("CreatedBy", Rows("1:1"), 0)
    
    'adding new sheet - CROPPED DATA
               Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Cropped Data"
    
    'tis where You copy selected columns to CROPPED DATA in specific A-Q order
                Sheets("Imported Data").Columns(SR0).Copy Destination:=Sheets("Cropped Data").Range("A1")
                Sheets("Imported Data").Columns(Descpt).Copy Destination:=Sheets("Cropped Data").Range("B1")
                Sheets("Imported Data").Columns(Stats).Copy Destination:=Sheets("Cropped Data").Range("C1")
                Sheets("Imported Data").Columns(Project).Copy Destination:=Sheets("Cropped Data").Range("D1")
                Sheets("Imported Data").Columns(SR0lead).Copy Destination:=Sheets("Cropped Data").Range("E1")
                Sheets("Imported Data").Columns(OpenDate).Copy Destination:=Sheets("Cropped Data").Range("F1")
                Sheets("Imported Data").Columns(CloseDate).Copy Destination:=Sheets("Cropped Data").Range("G1")
                Sheets("Imported Data").Columns(TPT).Copy Destination:=Sheets("Cropped Data").Range("H1")
                Sheets("Imported Data").Columns(STATUSnew).Copy Destination:=Sheets("Cropped Data").Range("I1")
                Sheets("Imported Data").Columns(WRKstat).Copy Destination:=Sheets("Cropped Data").Range("J1")
                Sheets("Imported Data").Columns(Priority).Copy Destination:=Sheets("Cropped Data").Range("K1")
                Sheets("Imported Data").Columns(CreatedBy).Copy Destination:=Sheets("Cropped Data").Range("L1")
                Sheets("Imported Data").Columns(OpPartner).Copy Destination:=Sheets("Cropped Data").Range("M1")
                Sheets("Imported Data").Columns(DUT).Copy Destination:=Sheets("Cropped Data").Range("N1")
                Sheets("Imported Data").Columns(OpCode).Copy Destination:=Sheets("Cropped Data").Range("O1")
                Sheets("Imported Data").Columns(OpDesc).Copy Destination:=Sheets("Cropped Data").Range("P1")
                Sheets("Imported Data").Columns(OpStatus).Copy Destination:=Sheets("Cropped Data").Range("Q1")