Excel VBA运行时错误“1004”:应用程序定义或对象定义错误。我做错了什么?

Excel VBA运行时错误“1004”:应用程序定义或对象定义错误。我做错了什么?,excel,vba,Excel,Vba,我有一个Powershell脚本,它将生成一个CSV文件,其中包含18台以上服务器的所有可用存储空间。我现在正在尝试自动格式化CSV文件,这样看起来就更好了。我的问题是,我的代码成功运行了一次,但在第二次运行时抛出了1004错误 在来到StackOverflow之前,我的代码看起来更加杂乱无章,也不那么完美。我现在已经删除了一些其他错误,比如不必要地使用Activesheet、使用.Select等,但我现在仍然找不到问题所在 请参阅下面的代码。请注意,我注释掉的AutoFit部件是我尚未开始工作

我有一个Powershell脚本,它将生成一个CSV文件,其中包含18台以上服务器的所有可用存储空间。我现在正在尝试自动格式化CSV文件,这样看起来就更好了。我的问题是,我的代码成功运行了一次,但在第二次运行时抛出了1004错误

在来到StackOverflow之前,我的代码看起来更加杂乱无章,也不那么完美。我现在已经删除了一些其他错误,比如不必要地使用Activesheet、使用.Select等,但我现在仍然找不到问题所在

请参阅下面的代码。请注意,我注释掉的AutoFit部件是我尚未开始工作的部件

Sub A_AllToTable()
    Dim tbl As ListObject
    With Sheets(1)
        Set tbl = .ListObjects.Add(xlSrcRange, .UsedRange, , xlYes)
        tbl.TableStyle = "TableStyleDark11"
'        tbl.Columns.AutoFit
    End With
End Sub
当我从fresh打开工作簿并运行代码时,它会按预期运行。它将格式化表格。我希望它能自动调整,也能自动按大小排序,但现在我只希望代码能工作不止一次


有人能告诉我为什么这不起作用,这样我以后就不会再犯同样的错误了吗?

Eureka!结果发现它没有运行,因为它试图在已经存在的表的顶部创建另一个表。我添加了一些代码,首先确保工作簿没有格式和表格,现在没有错误发生

谢谢大家一直在寻求关于这个问题的更多信息。你们都帮了大忙

最终代码:


当你说它不会运行两次时,你的意思是你在不同的sub中调用sub两次?或者您是否执行了一次sub,当您再次执行它时,会抛出一个错误?还有,错误发生在哪一行?我很抱歉。当我第二次直接从VBA控制台运行它时,它不工作。另外,它也没有提供任何关于它发生在哪一行的信息。让我有点困惑的是,Sheets1没有定义,你在什么地方声明了吗?我的意思是像Set Sheets=这个工作簿。工作表?还检查了本地窗口中的变量吗?这可能会给您一些有关错误及其发生位置的提示。Sheet1是否可能在第一次运行后以某种方式更改名称,是否意味着当您决定重新运行宏时无法再次找到它?@Nils:我想您的意思是Set wks=thishworkbook.Worksheets1或Set wks=thishworkbook.worksheetsheets1,例如…+++做得好:顺便说一句,您也可以说Sheet1.Cells.Clear,而不是这两行:
Sub A_AllToTable()
    Sheet1.ListObjects(1).Unlist
    Sheet1.UsedRange.ClearFormats
    Dim tbl As ListObject
    Set wks = ThisWorkbook.Worksheets(1)
    With wks
        Set tbl = wks.ListObjects.Add(xlSrcRange, wks.UsedRange, , xlYes)
        tbl.TableStyle = "TableStyleDark11"
'        tbl.Columns.AutoFit
    End With
End Sub