excel - 列没有不同值时的运行时错误 13

标签 excel runtime-error vba

以下是我的程序的一部分,它执行以下功能
它将查看 K 列和 L 列并根据组合创建选项卡。例如,如果 K 列有一个单元格值“Apple”,L 列有一个单元格值“Orange”,它将创建一个选项卡 1) Apple - Orange
新选项卡将包含具有此组合的所有行
所以一旦宏运行完成,整个数据会按照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 propertyxlDirectionxlDown将引用第 1,048,576 行。 WorksheetFunction.Transpose method限制为 65,536。任何超过此限制的行为都将导致,

Run-time error '13':
Type mismatch.



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

关于excel - 列没有不同值时的运行时错误 13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113098/

相关文章:

java - 项目在 Eclipse 中运行,但不是从命令行 : java. lang.NoClassDefFoundError 使用 Maven 和 Dom4J

java - Java 中收到非法表达式开始错误

vba - 在 XLSX 文件上运行 Excel 宏

vba - 用VBA复制Excel中的相对公式

VBA Do Until 循环有时会失败

python - 尝试替换我从 xlrd 创建的 sheet.row 列表中的值

VBA Excel宏消息框自动关闭

c# - 在 asp.net mvc 中检查上传的 Excel 文件中的非法字符

machine-learning - WEKA的 "Class has to be nominal if cost matrix given"错误

xml - 具有多个命名空间的 VBA SelectSingleNode xpath