Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2515|回复: 1

为什么执行Erase后Excel会发生崩溃?

[复制链接]
发表于 2017-12-15 10:17 | 显示全部楼层 |阅读模式
本帖最后由 rkexy 于 2017-12-15 10:36 编辑
  1. <div class="blockcode"><blockquote>'初始化空间为 10
  2. Private Sub Class_Initialize()
  3.     ReDim m_datas(1 To init_space)
  4.     Dim i As Integer
  5.     For i = 1 To init_space Step 1
  6.         '无论何时,对象之间赋值需要 Set 关键字
  7.         Set m_datas(i) = Nothing
  8.     Next
  9.     m_length = 0
  10.     m_useable_length = init_space
  11.     m_element_type = ""
  12. End Sub

  13. Private Sub Class_Terminate()
  14.     'Erase m_datas '这句崩了,下面两句没问题
  15.     Call Clean
  16.     ReDim m_datas(0)
  17. End Sub
  18. '清除所有数据
  19. Public Function Clean()
  20.     Dim i As Long
  21.     For i = 1 To m_length
  22.         Set m_datas(i) = Nothing
  23.     Next
  24. End Function
复制代码

然后我在一个Sub中测试这个类
  1. Sub test()
  2.     Dim map As Object_vector
  3.     Dim i As Long
  4.     Dim each_tile As Coord
  5.    
  6.     Set map = New Object_vector
  7.    
  8.     For i = 1 To 3270 Step 1
  9.         Set each_tile = New Coord
  10.         each_tile.x = i
  11.         each_tile.y = i
  12.         each_tile.coord_type = NONE
  13.         
  14.         Call map.Insert(i, each_tile)
  15.     Next
复制代码

为了把问题更全面,我把Coord类也贴出了,不过我认为和它没关系

  1. Public Enum ENUM_COORD_TYPE
  2.     NONE = -1
  3.     GROUND = 0
  4.     WALL = 1
  5. End Enum

  6. Private m_x As Integer
  7. Private m_y As Integer
  8. Private m_coord_type As ENUM_COORD_TYPE    '坐标类型

  9. Private Sub Class_Initialize()
  10.     m_x = -1
  11.     m_y = -1
  12.     m_coord_type = NONE
  13. End Sub

  14. Private Sub Class_Terminate()
  15.     m_x = -1
  16.     m_y = -1
  17.     m_coord_type = NONE
  18. End Sub
复制代码



excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2017-12-15 10:39 | 显示全部楼层
那个test函数最后有个
  1. End Sub
复制代码
也就是这句话崩了。我执行“执行代码至光标处”,也就是这个,没问题,再执行,Excel就无响应了。注掉Object_vector类中的Erase m_datas就不崩溃。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 22:30 , Processed in 0.229245 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表