vba - VBA - 仅在使用自定义对象的属性时出现溢出错误
问题描述
我正在尝试创建一个Player
包含Long
属性 Wealth 的对象,该属性必须分配给 Excel 中的单元格,但只有在最后一行引用时才会出现溢出运行时错误,newPlayer.Wealth
而不是在将值设置为大于的固定数字时最大整数。这是代码:
For i = 68 To (67 + numPlayers)
Dim newPlayer As New Player
newPlayer.Wealth = CLng(40000)
newPlayer.Number = i - 67
Range(Chr(i) & "2").Value = "Player " & CStr(newPlayer.Number)
Range(Chr(i) & "3").Value = newPlayer.Wealth
Next
但是,这有效:
Range(Chr(i) & "3").Value = CLng(40000)
我试图从我指定的单元格中清除格式,但我仍然遇到问题。这是什么原因?这也是我的类属性:
Private pNumber As Integer
Private pProperties As New Collection
Private pWealth As Long
Property Get Number() As Integer
Number = pNumber
End Property
Property Let Number(pNum As Integer)
pNumber = pNum
End Property
Property Get Properties() As Collection
Properties = pProperties
End Property
Property Get Wealth() As Long
Number = pWealth
End Property
Property Let Wealth(w As Long)
pWealth = w
End Property
Public Sub addProperty(property As PropertyUnit)
pProperties.Add (property)
End Sub
解决方案
修改你的类定义。
这似乎是错误的。除了 Get Number() 错误的复制/粘贴之外,将 40K 长推入有符号整数会溢出。
Private pNumber As Integer
Private pWealth As Long
...
Property Get Wealth() As Long
Number = pWealth
End Property
更改为类似,
...
Private pWealth As Long
Property Get Wealth() As Long
Wealth= pWealth
End Property
Property Let Wealth(Value As Long)
pWealth = Value
End Property
推荐阅读
- amazon-ecs - 如何使用 Route53 DNS 将 AWS Fargate ECS 容器公开到 Internet?
- reactjs - 点击 Gatsby 中的链接后,整个网站都卡住了
- angular - 带有数组的行为主题
- r - 按组计算数据帧中的频率
- python - SQL Server Python ML 服务中的 FileNotFoundError
- asp.net-core - ASP.net Core,使用另一个方法的错误消息重定向到 Index 方法
- netsuite - Netsuite - 将包装尺寸添加到标记订单包装屏幕
- excel - 更改依赖单元格中的值时没有 debug.print 输出 [VBA]
- php - 覆盖 WordPress 响应值
- gpio - GPIO 权限问题 Nvidia Jetson AGX Xavier