Excel精英培训网

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

[已解决]同样的VBA代码 为什么在EXCEL2013 会偶然停止工作,在excel2007里正常?

[复制链接]
发表于 2015-8-1 17:31 | 显示全部楼层 |阅读模式
本帖最后由 jkl86262123 于 2015-8-4 07:20 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. On Error Resume Next
  3. Dim Rng As Range, R As Range, Tmp$
  4. Set Rng = Intersect(Target, Columns(2))
  5. If Not Rng Is Nothing Then
  6.     Application.EnableEvents = False
  7.     With CreateObject("vbscript.regexp")
  8.         .Global = True
  9.         .Pattern = "[\u4e00-\u9fa5]"
  10.         For Each R In Rng
  11.             If Len(R.Text) Then
  12.                 temp = .Replace(R.Text, "")
  13.                 If IsError(Evaluate(temp)) = False Then R.Offset(, 1).Value = Evaluate(temp)
  14.             Else
  15.                 If R.Offset(, 3).Value <> "合计" Then R.Offset(, 1).Value = ""
  16.             End If
  17.         Next R
  18.     End With
  19.     Application.EnableEvents = True
  20. End If
  21. Set Rng = Nothing
  22. Set R = Nothing
  23. If Target.Column = 3 Then
  24. Application.EnableEvents = False
  25.     Set Rng = Columns("C:C").SpecialCells(xlCellTypeFormulas, 23)
  26.     Rng.Offset(, 2) = "合计"
  27.     If Intersect(Rng, Target) Is Nothing And Target.Offset(, 2) = "合计" Then Target.Offset(, 2) = ""
  28. Application.EnableEvents = True
  29. End If
  30. End Sub
复制代码
同样的一段代码      

操作是 先复制任意一行的数据,然后选中  sum公式 合计行(见图片),插入复制的单元格,EXCEL2013会偶然性的卡死,停止工作,未保存的东西会丢失,但是在excel2007里面 一切正常  这有可能是什么原因导致的?




最佳答案
2015-8-3 07:22
13版会自动更新屏幕,象Api高亮13版不行,我想,Application.ScreenUpdating=false 加在最前,
=True 放到最后试试。
另外,中间计算结果放在变量里,最后一步一起赋值给单元格可能比在循环里逐个赋值好些。
3.jpg
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-8-2 06:02 来自手机 | 显示全部楼层
然后选 中 sum公式 合计行(见图片),?
sum公式?在哪?
回复

使用道具 举报

 楼主| 发表于 2015-8-2 08:01 | 显示全部楼层
zpy2 发表于 2015-8-2 06:02
然后选 中 sum公式 合计行(见图片),?
sum公式?在哪?

合计行 就是用sum 求和的行 例如图片中的A157  我选择任意一行数据 然后选中A157插入 就会出现卡死想象在 excel2013中会这样,但是在excel2007中一切正常,是不是2013有什么特殊的地方
回复

使用道具 举报

发表于 2015-8-3 07:22 来自手机 | 显示全部楼层    本楼为最佳答案   
13版会自动更新屏幕,象Api高亮13版不行,我想,Application.ScreenUpdating=false 加在最前,
=True 放到最后试试。
另外,中间计算结果放在变量里,最后一步一起赋值给单元格可能比在循环里逐个赋值好些。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 01:21 , Processed in 0.416527 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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