我是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
任何帮助将不胜感激。如果您在其余代码中看到任何看起来明显无法按预期工作的内容,请同时指出。感谢
答案 0 :(得分:0)
你不应该使用字符串文字。
Worksheets("AllClasses").Rows("1:1, j:(i-1)").Copy
文字分配是&#34; 1:1,j:(i-1)&#34;这部分就是问题:j:(i-1)。
引号内的 中的任何内容都是文字字符串。它没有被评估为存储在变量j
和i
中的整数/长整数值。
Type Mismatch
是因为你发送的字符串需要长整数。
保持变量声明为As Long
,并将此行更改为使用Range而不是Rows对象:
Worksheets("AllClasses").Range("1:1," & i-1 & ":" & j).Copy