Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA宏中的运行时错误_Vba_Excel - Fatal编程技术网

VBA宏中的运行时错误

VBA宏中的运行时错误,vba,excel,Vba,Excel,我正试图将一个文件拆分成几行。我希望它大约每2000行中断一次,但是如果电子邮件地址(在列AD中)是最后一行和下一行之间的一个公共值,则在拆分之前获取具有相同值的所有行 到目前为止,我有以下几点: Sub Chunkify_Data() Dim inputFile As String, inputWb As Workbook Dim lastRow As Long, srow As Long, erow As Long Dim newFile As Wor

我正试图将一个文件拆分成几行。我希望它大约每2000行中断一次,但是如果电子邮件地址(在列AD中)是最后一行和下一行之间的一个公共值,则在拆分之前获取具有相同值的所有行

到目前为止,我有以下几点:

Sub Chunkify_Data()
    Dim inputFile As String, inputWb As Workbook
        Dim lastRow As Long, srow As Long, erow As Long
        Dim newFile As Workbook
        Dim etext As String, netext As String


    With ActiveWorkbook.Worksheets(1)
        lastRow = .Cells(Rows.Count, "A").End(xlUp).row

        Set newFile = Workbooks.Add


        srow = 1805
        While erow < lastRow
            erow = srow + 1999
            If (erow > lastRow) Then
                erow = lastRow
            Else
                etext = ActiveSheet.Cells(erow, 30).Value
                netext = ActiveSheet.Cells(erow + 1, 30).Value
                'Don't split up emails
                While (StrComp(etext, netext, vbTextCompare) = 0)
                    erow = erow + 1
                    netext = ActiveSheet.Cells(erow + 1, 30).Value
                Wend
            End If

            .Rows(1).EntireRow.Copy newFile.Worksheets(1).Range("A1")
            .Rows(srow & ":" & erow).EntireRow.Copy newFile.Worksheets(1).Range("A2")

            'Save in same folder as input workbook with .xlsx
            newFile.SaveAs Filename:=srow & "-" & erow & ".xlsx", CreateBackup:=False
            srow = erow + 1
        Wend
    End With

    newFile.Close saveChanges:=False
End Sub
Sub-Chunkify_Data()
Dim inputFile作为字符串,inputWb作为工作簿
变暗最后一行一样长,srow一样长,erow一样长
将新文件设置为工作簿
Dim etext作为字符串,netext作为字符串
使用Active工作簿。工作表(1)
lastRow=.Cells(Rows.Count,“A”).End(xlUp).row
Set newFile=Workbooks.Add
srow=1805
当erow<最后一行
erow=srow+1999
如果(erow>lastRow),则
erow=最后一行
其他的
etext=ActiveSheet.Cells(erow,30).Value
netext=ActiveSheet.Cells(erow+1,30).Value
“不要拆分电子邮件
而(StrComp(etext、netext、vbTextCompare)=0)
erow=erow+1
netext=ActiveSheet.Cells(erow+1,30).Value
温德
如果结束
.Rows(1).EntireRow.Copy newFile.Worksheets(1).Range(“A1”)
.Rows(srow&“:”&erow).EntireRow.Copy newFile.Worksheets(1).Range(“A2”)
'使用.xlsx保存在与输入工作簿相同的文件夹中
newFile.SaveAs文件名:=srow&“-”&erow&“.xlsx”,CreateBackup:=False
srow=erow+1
温德
以
newFile.Close saveChanges:=False
端接头

第二行netext=失败,出现“运行时错误“1004”:应用程序定义或对象定义错误”。我不明白为什么。有什么想法吗?

给出了什么错误?运行时错误“1004”:应用程序定义的错误或对象定义的错误。添加到问题中。while没有结束,它进入页面的末尾,当erow=工作表上的最后一行时,它不能再继续,您当然会得到错误。/facepalm。我在外面抓住了它,但在里面却没有。非常感谢。回答这个问题,我会投票给你,否则我会自己做。是的,现在不要出错。仍然不工作,但该错误已解决。