如何使用另一个模块中的对象?

时间:2019-08-19 22:19:07

标签: vba

这里是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

1 个答案:

答案 0 :(得分:0)

将宏的各个部分分离为单独的组件没有错。但是,也许一个子程序就能帮助您查看出错的地方。

  1. 声明工作表变量
  2. 添加和Set工作表
  3. 重命名工作表
  4. 添加列表对象

请注意,这些都没有更改工作簿对象(例如工作簿名称,位置等),但是您的公共变量为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