Excel 2016-VBA-设置对象错误91
下面的代码已插入“ThisWorkbook”Microsoft Excel对象。为什么工作簿的“打开”子结尾“我的集合对象”被更改为“无”Excel 2016-VBA-设置对象错误91,excel,vba,set,Excel,Vba,Set,下面的代码已插入“ThisWorkbook”Microsoft Excel对象。为什么工作簿的“打开”子结尾“我的集合对象”被更改为“无” 'Declare WorkBook variables Public wbI As Workbook, wbO As Workbook Public wsData As Worksheet, wsMain As Worksheet, wsPForma As Worksheet Public Sub Workbook_Open() Applicat
'Declare WorkBook variables
Public wbI As Workbook, wbO As Workbook
Public wsData As Worksheet, wsMain As Worksheet, wsPForma As Worksheet
Public Sub Workbook_Open()
Application.Wait (10) 'Wait 0.1 seconds
Set wbI = ThisWorkbook
Set wsData = wbI.Sheets("Customs Details Sheet Data")
Set wsMain = wbI.Sheets("Customs Details Sheet")
Set wsPForma = wbI.Sheets("Manufacturer Pro-Forma")
End Sub
如果要检查变量是否已正确设置,可以使用
VarType
函数对其进行测试
它将返回一个值,该值指示基于此变量的变量类型
在您的情况下,您可以键入:
MsgBox(VarType(wsData))
如果你的工作表设置正确,你会得到一个9,它代表一个对象,这个对象就是你的工作表
如果您试图使用数据表上的dVBnum=wsData.Cells(1,5)'VB Number单元格位置来获取单元格位置,那么您的操作是错误的
要获取单元格地址,有两个选项:
获取单元格的address属性
dVBnum = wsData.Cells(1, 5).Address
对于dVBnum
获取包含行和列的位置
dVBnum = wsData.Range("E1").row & ", " & Range("E1").Column
对于dVBnum
dVBnum
是一个范围,您将得到“1,1”
。您从未初始化它,因此它是无
线路
“将dVBnum
的值
设置为等于wsData.Cells(1,5)
的.Value
”
因为dVBnum
是Nothing
,所以它没有值
如果要将对范围wsData.Cells(1,5)
本身的引用存储在变量中,则
如果要将存储在单元格中的值存储到变量中,则不应将变量声明为范围
:
Dim dVBnum As Variant
dVBnum = wsData.Cells(1, 5)
你想达到什么目标?您希望将什么类型的数据绑定到dVBnum
变量?单元格内容或其位置?尝试添加一些“Msgbox Not wsData Is Nothing”以检查wsData是否已正确设置此代码可能给出错误91的唯一方法是当dVBnum
是一个对象类型变量且Nothing
时。所有其他原因都会导致不同的错误。@GSerg不完全是这样。如果wsData
在dVBnum
行之前设置为Nothing
,它也将以错误91结束。什么类型的变量是dVBnum
?可以。稍后我将使用dVBnum.Value获取该单元格的值,并将其分配给另一个变量。确定。我的计划是使用dVBnum作为范围的参考,但我认为是代码中的“wsData”部分导致了我的问题。如上所述,我已经在我的dVBnum前面添加了“Set”一词,现在它正在工作。谢谢,我在后面引用DVB的代码中的另一个子代码中遇到了相同的错误,现在添加它。“工作簿\打开”子项后,“我的集合”似乎变为“无”ends@Chris如果您的变量是局部变量,如何使它们成为全局变量而不是局部变量?我曾尝试将delcarations放入一个模块,并尝试将SET命令放入和移出该模块,但都没有成功
Set dVBnum = wsData.Cells(1, 5)
Dim dVBnum As Variant
dVBnum = wsData.Cells(1, 5)