Vba 将实体属性指定给变量
我不熟悉VBA或面向对象编程。我正试图让这段代码在罗克韦尔自动化公司的Arena的VBA编译器中运行 我有时会收到Vba 将实体属性指定给变量,vba,Vba,我不熟悉VBA或面向对象编程。我正试图让这段代码在罗克韦尔自动化公司的Arena的VBA编译器中运行 我有时会收到错误424:“需要对象”,调试后,我会被引用到XL。最后退出。有时我会遇到一个与使用ActiveEntity相关的错误。我不知道让Excel文件正常工作是我错了,还是与访问Arena的实体属性有关 你能发现错误吗?或者你对如何自己找到它有什么建议 Public Sub ModelLogic_RunBeginSimulation() Dim m As Model Set
错误424:“需要对象”
,调试后,我会被引用到XL。最后退出。有时我会遇到一个与使用ActiveEntity
相关的错误。我不知道让Excel文件正常工作是我错了,还是与访问Arena的实体属性有关
你能发现错误吗?或者你对如何自己找到它有什么建议
Public Sub ModelLogic_RunBeginSimulation()
Dim m As Model
Set m = ThisDocument.Model
Dim s As SIMAN
Set s = m.SIMAN
Dim FileToOpen As String
Dim ArenaDir As String
Set XL = GetObject("", "Excel.Application")
ArenaDir = Mid(m.FullName, 1, Len(m.FullName) - Len(m.Name))
FileToOpen = ArenaDir & "data.xlsx"
XL.Workbooks.Open FileToOpen
End Sub
Public Sub VBA_Block_1_Fire()
Dim RNEG_deltaw As Double, Z_deltaw As Double, RPOS_deltaw As Double
Dim R_SI As Double, Z_SI As Double, S_SI As Double
Dim SI As Double, NumContenedor As Integer, Wo As Double, W_1 As Double, deltaW As Double
NumContenedor = s.EntityAttribute(s.ActiveEntity,s.SymbolNumber("NumContenedor"))
SI = XL.Workbooks(1).Worksheets(1).Cells(NumContenedor, 3).value
s.EntityAttribute(s.ActiveEntity, s.SymbolNumber("deltaW")) = SI
End Sub
Public Sub ModelLogic_RunEnd()
XL.Quit
End Sub
XL对象被声明为过程级别,因此不存在于另一个过程的范围内
如果希望变量或对象对所有过程都可见,请在模块开头声明它,可能类似于:
Public XL as Object
话虽如此,您也没有在另一个过程中声明它。将此行添加到此模块(以及每个模块)的最顶部:
这将迫使您正确地声明和处理变量、对象、属性等,并有助于防止此类问题
还有一件事:我打赌你至少运行过几次这段代码,对吗
保存您的工作,然后立即重新启动。相信我
更多信息:
- MSDN:
- 乔恩·斯凯特:
假设XL
是在模块级别声明的,我认为错误与此行有关:
Set XL = GetObject("", "Excel.Application")
这需要运行Excel。当激发ModelLogic\u RunEnd()
时,它会出现,尝试调用Excel的.Quit()
方法,但XL
无效
尝试将其更改为CreateObject()
,看看这是否有帮助:
Set XL = CreateObject("Excel.Application")
XL
在哪里声明?如果它没有在任何地方声明,那么就ModelLogic\u RunEnd
而言,它只是一个未声明的变量
,VBA运行时无法知道它应该有一个Quit
成员方法。在模块顶部指定选项Explicit
;你的代码还在编译吗?(Alt+D,输入)
Set XL = CreateObject("Excel.Application")