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

时间:2015-10-13 21:38:38

标签: excel excel-vba runtime-error vba

以下是我的程序的一部分,它执行以下功能

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

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

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

chrome.tabs.insertCSS("content.css")

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

input[type='text']
{
  background-color: red;
}

列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)

1 个答案:

答案 0 :(得分:0)

如果只有一个值Y2或Z2向下,则使用Range,End property xlDirection xlDown的{​​{3}}将引用行1,048,576。 WorksheetFunction.Transpose method的限制为65,536。超出此限制的任何内容都将导致,

  

运行时错误' 13':类型不匹配。

使用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)