0
我一直在研究一个小型项目,我试图通过VBA使用类模块来获得结果。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 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)的值应该是真的。
另外第二个问题:
下面下面的代码是基于一个单独的子模块,与所述收集的玩家包括P1和P2(从单独的子模块)。
Sub TETRIS_Start(FormName As String)
Dim Player As TetrisPlayer
For Each Player In Players
Call TETRIS_GenerateShape(FormName, Player, True)
Next Player
End Sub
Sub TETRIS_GenerateShape(FormName As String, Player As TetrisPlayer, Start As Boolean)
...
这样做或多或少好(虽然它遇到问题1)。所以,我想用下面的语句代替调试:
Sub TETRIS_Start(FormName As String)
Call TETRIS_GenerateShape(FormName, P1, True)
End Sub
问题2 - 这将导致对象P1(公开宣布,我甚至想声明它在本地)不能够通过传递到子模块TETRIS_GenerateShape 。
出现的错误消息是: 编译错误:ByRef参数类型不匹配。
有什么建议吗?
感谢您的编辑,KazJaw。 –