Excel精英培训网

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

[已解决]此事件代码是什么意思呀,请大家帮忙!

[复制链接]
发表于 2013-6-2 20:39 | 显示全部楼层 |阅读模式
本帖最后由 香满园 于 2013-6-2 20:42 编辑

这个事件代码是什么意思呀,为什么我在各个工作表间激活时,没有什么变化,只有看到一些闪烁的效果,请大家帮忙!谢谢
Dim o As Object
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim c As Long
    Dim r As Long
    Dim cel As String
    Dim sel As String
    On Error GoTo fin
    If o Is Nothing Then Exit Sub
    If TypeName(Sh) <> "Worksheet" Then Exit Sub
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    o.Active
    c = ActiveWindow.ScrollColumn
    r = ActiveWindow.ScrollRow
    cel = ActiveCell.Address
    Sh.Active
    ActiveWindow.ScrollColumn = c
    ActiveWindow.ScrollRow = r
    Range(sel).Select
    Range(cel).Activate
fin:
    Application.EnableEvents = True
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If TypeName(Sh) = "Worksheet" Then Set o = Sh
End Sub

最佳答案
2013-6-2 23:19
(, 下载次数: 3)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-6-2 21:03 | 显示全部楼层
本帖最后由 无聊的疯子 于 2013-6-2 21:05 编辑

这些事件中的代码本来就是移动工作表视图的
回复

使用道具 举报

 楼主| 发表于 2013-6-2 21:08 | 显示全部楼层
无聊的疯子 发表于 2013-6-2 21:03
这些事件中的代码本来就是移动工作表视图的

能具体点吗,我还是看不懂!谢谢你
回复

使用道具 举报

发表于 2013-6-2 21:18 | 显示全部楼层
香满园 发表于 2013-6-2 21:08
能具体点吗,我还是看不懂!谢谢你

代码最后并没有打开 屏幕更新,建议你自己添加吧!!

  1. Dim o As Object
  2. Private Sub Workbook_SheetActivate(ByVal Sh As Object)      '当激活任何工作表时发生此事件。
  3.     Dim c As Long
  4.     Dim r As Long
  5.     Dim cel As String
  6.     Dim sel As String
  7.     On Error GoTo fin   '遇到错误跳转到 fin
  8.    
  9.     If o Is Nothing Then Exit Sub   '如果 o 没有被赋值,则退出过程
  10.     If TypeName(Sh) <> "Worksheet" Then Exit Sub    '如果 对像变量Sh 的类型不是 worksheet 则退出过程
  11.     Application.ScreenUpdating = False      '关闭屏幕更新
  12.     Application.EnableEvents = False        '关闭事件
  13.     o.Active        '激活 O 表,也就是 激活本表之前的那一个表
  14.     c = ActiveWindow.ScrollColumn       '返回指定窗格或窗口最左边的列号
  15.     r = ActiveWindow.ScrollRow          '返回指定窗格或窗口最上面显示的行号
  16.     cel = ActiveCell.Address            '提取激活单元格的 地址
  17.     Sh.Active       '激活 sh 表
  18.     ActiveWindow.ScrollColumn = c       '设置指定窗格或窗口最左边的列号
  19.     ActiveWindow.ScrollRow = r          '设置指定窗格或窗口最上面显示的行号
  20.     Range(sel).Select       '选择 上一工作表 选择中的单元格
  21.     Range(cel).Activate     '激活 该单元格
  22. fin:
  23.     Application.EnableEvents = True     '打开事件
  24. End Sub
  25. Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)    '当任何工作表被停用时发生此事件
  26.     If TypeName(Sh) = "Worksheet" Then Set o = Sh    '如果对像变量的类型是 worksheet 则 将对像赋值给 o
  27. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-6-2 21:39 | 显示全部楼层
无聊的疯子 发表于 2013-6-2 21:18
代码最后并没有打开 屏幕更新,建议你自己添加吧!!

我看了之后,感觉是把激活的上一个工作表的一些选择状态保留至下一个激活工作表,但我激活下一个工作表时,还是原来的那个样子,没有什么变化,如果是我理解的这个意思,那么这个代码是不是那里不对,如果不是,那么这个我还是不理解呀
回复

使用道具 举报

发表于 2013-6-2 21:45 | 显示全部楼层
你的代码是保存工作表视图的,切换到每个工作表,当前视图区域都是一样。
回复

使用道具 举报

 楼主| 发表于 2013-6-2 22:07 | 显示全部楼层
hwc2ycy 发表于 2013-6-2 21:45
你的代码是保存工作表视图的,切换到每个工作表,当前视图区域都是一样。

能不能做个动画!视图是指VBE中的ScrollArea吗?谢谢
回复

使用道具 举报

发表于 2013-6-2 22:08 | 显示全部楼层
Worksheet.ScrollArea 属性
以 A1 样式的区域引用形式返回或设置允许滚动的区域。用户不能选定滚动区域之外的单元格。String 类型,可读写。
语法

表达式.ScrollArea

表达式   一个代表 Worksheet 对象的变量。

说明


可将该属性设置为空字符串 ("") 以允许对整张工作表内所有单元格的选定。


示例


本示例设置第一张工作表的滚动区域。

Visual Basic for Applications
Worksheets(1).ScrollArea = "a1:f10"
回复

使用道具 举报

 楼主| 发表于 2013-6-2 22:16 | 显示全部楼层
hwc2ycy 发表于 2013-6-2 22:08
Worksheet.ScrollArea 属性
以 A1 样式的区域引用形式返回或设置允许滚动的区域。用户不能选定滚动区域之 ...

这个scrollarea明白了,但事件代码我想看下具体的效果,因为你所说的视图我不懂,自己不会操作,谢谢你
回复

使用道具 举报

发表于 2013-6-2 22:22 | 显示全部楼层
代码不是有注释嘛。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 13:26 , Processed in 0.320089 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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