Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: tinytiger

[已解决]下面这段代码在Excel 2003下运行没有问题,为何在Excel 2010下运行没有反应?

[复制链接]
 楼主| 发表于 2016-6-10 17:02 | 显示全部楼层
本帖最后由 tinytiger 于 2016-6-10 17:05 编辑
zjdh 发表于 2016-6-10 16:45
1.  ListBox1.ListIndex 何来的-1?  2010版中首行为 0  (你没有设置列标)
2.  运行ListBox1_DblClick正 ...

我的问题是2003下运行没有问题,2010不能运行!和ListBox1.ListIndex有什么关系?
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2016-6-10 18:07 | 显示全部楼层
zjdh 发表于 2016-6-10 16:45
1.  ListBox1.ListIndex 何来的-1?  2010版中首行为 0  (你没有设置列标)
2.  运行ListBox1_DblClick正 ...

老师,您好。目前暂时知道的原因是:2010下要等很长的时间,有时候需要3秒,甚至10秒以上,ListBox1的内容才能成为可选的状态,具体的原因不明确。老师您还有没有别的方法可以解决这个问题。
回复

使用道具 举报

发表于 2016-6-10 18:25 | 显示全部楼层
本帖最后由 zjdh 于 2016-6-10 18:29 编辑

不会啊,除了当第7列为空时,点击第8列会再次触发事件,其他没有死循环或反复触发事件情况,不会运行很长时间的,找找其他原因,或则因为计算公式太多.......
回复

使用道具 举报

发表于 2016-6-10 18:27 | 显示全部楼层
若是公式太多造成的,可将以下语句分别放在事件语句的首尾:
Application.Calculation = xlManual '手动计算
Application.Calculation = xlAutomatic '自动计算
回复

使用道具 举报

 楼主| 发表于 2016-6-10 18:32 | 显示全部楼层
zjdh 发表于 2016-6-10 18:27
若是公式太多造成的,可将以下语句分别放在事件语句的首尾:
Application.Calculation = xlManual '手动计 ...

公式很少,而且2003下运行很正常
回复

使用道具 举报

发表于 2016-6-10 18:36 | 显示全部楼层
搞不清啦
恐怕就是系统问题啦,放到人家的电脑中试试。
我这运行正常啊。
回复

使用道具 举报

发表于 2016-6-10 20:23 | 显示全部楼层    本楼为最佳答案   
具体原因不明,在一下代码的最后加了
ActiveWindow.ScrollRow = TR - 1
  ActiveWindow.ScrollRow = TR
你试试,加了之后我这边运行正常,相当于模拟鼠标滑轮滑动,你之前说的延迟也不是,鼠标滑动一下就可以了!
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.   Dim TR%, TC%, strV() As String, intI%, intL%
  3.   TR = Target.Row: TC = Target.Column
  4.   ListBox1.Visible = False
  5.   ListBox1.Locked = True
  6.   ListBox1.Locked = False
  7.   If TR > 1 And TR <= 281 And Target.Count = 1 Then
  8.     If TC = 7 Then
  9.       ActiveWindow.ScrollRow = TR
  10.       With ListBox1
  11.         .MultiSelect = 0
  12.         .ListStyle = 1
  13.         If Cells(TR, 6) = "城" Then
  14.           .List = Sheets("系统设置").Range("A9:B36").Value
  15.           .Height = 400
  16.           .ColumnCount = 2
  17.           .Width = 185
  18.           .ColumnWidths = "130,10"
  19.         Else
  20.           .List = Sheets("系统设置").Range("C9:C35").Value
  21.           .Height = 400
  22.           .Width = 150
  23.           .ColumnWidths = 130
  24.         End If
  25.         .Top = Target.Top
  26.         .Left = Target.Left + Target.Width
  27.         .Visible = True
  28.       End With
  29.     End If
  30.    
  31.     If TC = 8 Then
  32.       
  33.     ActiveWindow.ScrollRow = TR
  34.       If Trim(Cells(TR, 7)) = "" Then
  35.         Cells(TR, 7).Select
  36.       Else
  37.         With ListBox1
  38.           .MultiSelect = 1
  39.           .ListStyle = 1
  40.           .List = Sheets("系统设置").Range("C9:C35").Value
  41.           .Top = Target.Top
  42.           .Left = Target.Left + Target.Width
  43.           .Height = 400
  44.           .Width = 150
  45.           .ColumnWidths = 130
  46.           .Visible = True
  47.         End With
  48.         
  49.         If Trim(Target.Value) <> "" Then
  50.           strV = Split(Target.Value, "、")
  51.           For intI = 0 To UBound(strV)
  52.             For intL = 0 To ListBox1.ListCount - 1
  53.               If ListBox1.List(intL) = strV(intI) Then ListBox1.Selected(intL) = True
  54.             Next
  55.           Next
  56.         End If
  57.       End If
  58.     End If
  59.   ActiveWindow.ScrollRow = TR - 1
  60.   ActiveWindow.ScrollRow = TR
  61.   End If
  62. End Sub
复制代码

tmp.rar

34.25 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2016-6-10 22:15 | 显示全部楼层
本帖最后由 tinytiger 于 2016-6-10 22:21 编辑
老司机带带我 发表于 2016-6-10 20:23
具体原因不明,在一下代码的最后加了
ActiveWindow.ScrollRow = TR - 1
  ActiveWindow.ScrollRow = TR
...

还真的管用了,多谢!
回复

使用道具 举报

 楼主| 发表于 2016-6-10 22:48 | 显示全部楼层
老司机带带我 发表于 2016-6-10 20:23
具体原因不明,在一下代码的最后加了
ActiveWindow.ScrollRow = TR - 1
  ActiveWindow.ScrollRow = TR
...

把上面的两个ActiveWindow.ScrollRow = TR取消,保留最后一行ActiveWindow.ScrollRow = TR就可以了


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 22:25 , Processed in 0.623222 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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