运行时错误'13'类型不匹配,如果用int替换long,则运行时错误'6'溢出

时间:2014-07-17 17:32:04

标签: vba excel-vba excel

我是VBA的新手,我正在尝试设计一个程序,该程序将通过其中包含字符串的列,并为每个唯一的String名称创建一个新的工作表对象,并将该String值作为其名称,然后复制并将该行中的值粘贴到新工作表中。然后,所有相同的字符串也应该将其行中的值复制到新工作表中。

我遇到了运行时错误' 13'在我的代码中我输入longs时尝试计算单元格值的类型不匹配。例如:单元格(长x,长y)。值。我尝试将值更改为整数以避免出现问题,但后来我遇到了运行时错误' 6'溢出错误,即使我的文档只有2272行长,并且错误发生在代码甚至经历了循环的一次迭代之前。 这是代码:

Sub FilterByClass()
Dim i As Long
Dim j As Long
Dim k As Long
Dim sheetName As String

ActiveSheet.Name = "AllClasses"
sheetName = Worksheets("AllClasses").Cells(2, 1).Value
Worksheets.Add
ActiveSheet.Name = sheetName
Worksheets("AllClasses").Activate
ActiveSheet.Rows("1:2").Copy
Worksheets(sheetName).Paste
j = 3
k = 0
For i = 3 To Rows.Count
     If Worksheets("AllClasses").Cells(i, 1).Value <> Worksheets("AllClasses").Cells(i - 1, 1).Value Then
        Worksheets("AllClasses").Rows("1:1, j:(i-1)").Copy ***Where the error takes place
        Worksheets(Worksheets("AllClasses").Cells((i - 1), 1).Value).Paste
        j = i
        sheetName = Worksheets("AllClasses").Cells(i, 1).Value
        For Each sheet In ActiveWorkbook
        If sheetName = sheet.Name Then k = 1
        Next sheet
    If k = 1 Then k = 0
    Else
        Worksheets.Add
        ActiveSheet.Name = sheetName
        Worksheets("AllClasses").Activate
    End If
Next i
End Sub

任何帮助将不胜感激。如果您在其余代码中看到任何看起来明显无法按预期工作的内容,请同时指出。感谢

1 个答案:

答案 0 :(得分:0)

你不应该使用字符串文字。

Worksheets("AllClasses").Rows("1:1, j:(i-1)").Copy

文字分配是&#34; 1:1,j:(i-1)&#34;这部分就是问题:j:(i-1)。

引号内的 中的任何内容都是文字字符串。它没有被评估为存储在变量ji中的整数/长整数值。

Type Mismatch是因为你发送的字符串需要长整数。

保持变量声明为As Long,并将此行更改为使用Range而不是Rows对象:

Worksheets("AllClasses").Range("1:1," & i-1 & ":" & j).Copy