Arrays VBA:类模块和数组问题
我一直在做一个小项目,在这个项目中,我试图通过VBA使用类模块来获得结果 第一个问题: 以下语句来自类模块:Arrays VBA:类模块和数组问题,arrays,class,vba,object,module,Arrays,Class,Vba,Object,Module,我一直在做一个小项目,在这个项目中,我试图通过VBA使用类模块来获得结果 第一个问题: 以下语句来自类模块: Private xRef As Integer Private yRef As Integer Private bValue As Boolean Private NextTiles(1 To 4, 1 To 4) As Boolean Public Property Get PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integ
Private xRef As Integer
Private yRef As Integer
Private bValue As Boolean
Private NextTiles(1 To 4, 1 To 4) As Boolean
Public Property Get PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer) As Boolean
PreviewTiles(xRef, yRef) = NextTiles(xRef, yRef)
End Property
Public Property Let PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer, ByVal bValue As Boolean)
NextTiles(xRef, yRef) = bValue
End Property
在主子模块主体中,存在以下语句:
Public P1, P2 As TetrisPlayer
Set P1 = New TetrisPlayer
Set P2 = New TetrisPlayer
...
P1.PreviewTiles(1, 1) = True
MsgBox P1.PreviewTiles(1, 1)
问题1-
这会返回P1.PreviewTiles(1,1)的值为False,而它应该为true
第二个问题:
下面的代码基于一个单独的子模块,集合播放器包括P1和P2(来自一个单独的子模块)
这或多或少是可行的(尽管它遇到了问题1)。因此,我尝试使用以下语句进行调试:
Sub TETRIS_Start(FormName As String)
Call TETRIS_GenerateShape(FormName, P1, True)
End Sub
问题2-
这导致对象P1(公开声明,我甚至尝试在本地声明)无法传递到子模块TETRIS_GenerateShape
出现的错误消息是:
编译错误:ByRef参数类型不匹配
有什么建议吗?这是:
Public P1, P2 As TetrisPlayer
没有做你认为是的事。P1现在是一个变体,P2是一个四驱播放器。相反,请使用:
Public P1 as TetrisPlayer, P2 as TetrisPlayer
在TetrisPlayer中使用此选项,或者在当前代码中使用:
Public Property Get PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer) As Boolean
PreviewTiles = NextTiles(xRef, yRef)
End Property
Public Property Let PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer, ByVal bValue As Boolean)
NextTiles(xRef, yRef) = bValue
End Property
首先,在MsgBox P1.PreviewFiles(1,1)上设置一个断点,然后运行代码以观察发生了什么 这是:
Public P1, P2 As TetrisPlayer
没有做你认为是的事。P1现在是一个变体,P2是一个四驱播放器。相反,请使用:
Public P1 as TetrisPlayer, P2 as TetrisPlayer
在TetrisPlayer中使用此选项,或者在当前代码中使用:
Public Property Get PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer) As Boolean
PreviewTiles = NextTiles(xRef, yRef)
End Property
Public Property Let PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer, ByVal bValue As Boolean)
NextTiles(xRef, yRef) = bValue
End Property
首先,在MsgBox P1.PreviewFiles(1,1)上设置一个断点,然后运行代码以观察发生了什么 这是:
Public P1, P2 As TetrisPlayer
没有做你认为是的事。P1现在是一个变体,P2是一个四驱播放器。相反,请使用:
Public P1 as TetrisPlayer, P2 as TetrisPlayer
在TetrisPlayer中使用此选项,或者在当前代码中使用:
Public Property Get PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer) As Boolean
PreviewTiles = NextTiles(xRef, yRef)
End Property
Public Property Let PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer, ByVal bValue As Boolean)
NextTiles(xRef, yRef) = bValue
End Property
首先,在MsgBox P1.PreviewFiles(1,1)上设置一个断点,然后运行代码以观察发生了什么 这是:
Public P1, P2 As TetrisPlayer
没有做你认为是的事。P1现在是一个变体,P2是一个四驱播放器。相反,请使用:
Public P1 as TetrisPlayer, P2 as TetrisPlayer
在TetrisPlayer中使用此选项,或者在当前代码中使用:
Public Property Get PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer) As Boolean
PreviewTiles = NextTiles(xRef, yRef)
End Property
Public Property Let PreviewTiles(ByVal xRef As Integer, ByVal yRef As Integer, ByVal bValue As Boolean)
NextTiles(xRef, yRef) = bValue
End Property
首先,在MsgBox P1.PreviewFiles(1,1)上设置一个断点,然后运行代码以观察发生了什么