当列没有不同的值时,运行时错误13

以下是我的程序的一部分,它执行下面的function

它将查看列K和列L并根据组合创build选项卡。 例如,如果K列的单元格值为“Apple”,而L列的单元格值为“Orange”,则将创build一个选项卡1)Apple – Orange

新选项卡将包含所有具有该组合的行因此,一旦完成了macros的运行,整个数据将根据K-L组合分成不同的选项卡

我的问题是,当整列K或整列L只有一个值时,发出运行时错误。 例如,如果整个K列有10行,并且所有列k个单元格都有值Apple,则会发生错误。 L列也一样。

Dim m As Integer Dim area As Range Count = Range("K:K").SpecialCells(xlLastCell).Row ActiveSheet.Range("K2:K" & Count).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("Z2"), Unique:=True Columns(26).RemoveDuplicates Columns:=Array(1) Count1 = Range("L:L").SpecialCells(xlLastCell).Row ActiveSheet.Range("L2:L" & Count1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=ActiveSheet.Range("Y2"), Unique:=True Columns(25).RemoveDuplicates Columns:=Array(1) Dim arrayv As String Dim Text1 As String Dim arrayv1 As String last = Range("Z2").End(xlDown).Row arrayv = WorksheetFunction.Transpose(Sheets(1).Range("Z2:Z" & last).Value) last1 = Range("Y2").End(xlDown).Row arrayv1 = WorksheetFunction.Transpose(Sheets(1).Range("Y2:Y" & last1).Value) Columns(26).EntireColumn.Delete Columns(25).EntireColumn.Delete Dim i As Long, j As Long Dim flag As Variant flag = 1 A = 1 s = 2 For c = 1 To UBound(arrayv1) For t = 1 To UBound(arrayv) Sheets.Add().Name = "Sheet" & s ActiveSheet.Move After:=Sheets(ActiveWorkbook.Sheets.Count) With Worksheets("Sheet1") j = 2 .Rows(1).Copy Destination:=Worksheets("Sheet" & s).Range("A" & 1) flag = 1 For i = 2 To Count If .Cells(i, 11).Value = arrayv(t) Then If .Cells(i, 12).Value = arrayv1(c) Then Text = .Cells(i, 15).Value flag = 0 .Rows(i).Copy Destination:=Worksheets("Sheet" & s).Range("A" & j) j = j + 1 End If End If Next i If flag = 1 Then Sheets("Sheet" & s).Delete Else Text1 = Left(Text, 4) 

列K只有一个值时的错误行

  arrayv = WorksheetFunction.Transpose(Sheets(1).Range("Z2:Z" & last).Value) 

列L只有一个值时的错误行

 arrayv1 = WorksheetFunction.Transpose(Sheets(1).Range("Y2:Y" & last1).Value) 

如果只有一个值Y2或Z2向下,那么使用Range,End和xlDirection的xlDown 属性将引用1,048,576行。 WorksheetFunction.Transpose方法的限制为65,536。 超过这个限制的任何事情将导致,

运行时错误“13”:
types不匹配。

改变最后一行寻找的方向从xlUp底部xlUp

 last = Range("Z" & rows.count).End(xlUp).Row arrayv = WorksheetFunction.Transpose(Sheets(1).Range("Z2:Z" & last).Value) last1 = Range("Y" & rows.count).End(xlUp).Row arrayv1 = WorksheetFunction.Transpose(Sheets(1).Range("Y2:Y" & last1).Value)