这里是VBA的全新功能。我在运行代码时遇到问题。在第一个模块中,它工作正常,并创建了一个新的Excel工作表,该工作表已格式化为所需的数据。在第二个模块中,我希望能够创建一个可以对其进行排序的表。我运行了代码,发现运行时错误为“ 91”:对象变量或未设置块变量。
如果有人可以提供一些建议,将不胜感激,谢谢!
第一个模块:
Option Explicit
Public wsFormatted As Workbook
Sub FormatData()
'Create new worksheet named "Formatted"
Set wsFormatted = ThisWorkbook.Sheets.Add
wsFormatted.Name = "Formatted"
End Sub
第二个模块:
Option Explicit
Sub createTable()
Dim Formatted As Workbook
Formatted.ListObjects.Add(xlSrcRange, Range("A1:M105"), , xlYes).Name = "SortedTable"
End Sub
答案 0 :(得分:0)
将宏的各个部分分离为单独的组件没有错。但是,也许一个子程序就能帮助您查看出错的地方。
Set
工作表请注意,这些都没有更改工作簿对象(例如工作簿名称,位置等),但是您的公共变量为wsFromatted as Workbook
。您正在更改工作簿的子属性:工作表。因此,您的变量wsFormatted
的类型应为Worksheet
Option Explicit
Sub FormatData()
Dim wsFormatted As Worksheet
Set wsFormatted = ThisWorkbook.Sheets.Add
wsFormatted.Name = "Formatted"
wsFormatted.ListObjects.Add(xlSrcRange, Range("A1:M105"), , xlYes).Name = "SortedTable"
End Sub