excel - VBA 运行时错误“1004”:应用程序定义的或对象定义的错误。我究竟做错了什么?
问题描述
我有一个 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
当我从新打开工作簿并运行代码时,它会按预期运行。它将格式化表格。我希望将其用于 AutoFit 并按大小自动排序,但现在我只想让代码不止一次地工作
有人可以提供一些关于为什么这不起作用的见解,这样我就可以避免将来再次犯同样的错误?
解决方案
尤里卡!事实证明它没有运行,因为它试图在已经存在的表之上创建另一个表。我添加了一些代码以首先确保工作簿没有格式和表格,现在不会发生错误!
感谢所有一直在寻求有关该问题的更多信息的人。你们都帮了大忙!
最终代码:
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
推荐阅读
- javascript - OnBlur 在文本框中输入的文本末尾添加“.00”
- actions-on-google - Google Actions Builder 需要许多插槽
- c# - 在 C# 中删除列后循环数据表
- java - 服务语义检查
- java - 安卓 Java 套接字。无法向服务器发送消息
- java - (UDP) 服务器无法与客户端正确通信
- excel - Excel - 引用具有不同行的特定列中的单元格的通用公式
- ios - “AuthDataResult”没有成员“profileChangeRequest”
- vue.js - 如何使模态在打开一次后具有错误值
- kubernetes - 主机终止在大使入口中不起作用