Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,Office培训学习的最佳社区
设为首页收藏本站|繁體中文 切换到窄版

Excel Home论坛

 找回密码
 免费注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

魔方网表,Excel终结者,永久免费 Excel服务器2010软件和教程下载 菜鸟啃Excel: 样章试读
Excel不给力? 何不试试FoxTable! 2012年Excel免费培训班2-6月开课计划 新人必读:ExcelHome最佳学习方法 免费下载Excel行业应用视频教程
精粹:成为Excel高手的捷径 免费下载39集新Excel精粹视频教程 免费学习Excel数据透视表视频教程 入门必看《循序渐进学Excel》视频
Excel辅助工具的巅峰之作--Kutools 免费学习Excel 2007精粹视频教程 Office Tab,Office界面的革命性创新 搞不定老板要的报表?我们来帮您

求助工作表标签重命名问题

查看: 1757|回复: 5| 收藏 :0
  • 197财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    69
    精华
    0
    分享
    0

    求助工作表标签重命名问题 [复制链接]

    我想在一个工作簿中对部分工作表标签进行保护,但网上搜索了一下好像没有完全能控制的方法,我向求助各位写一段代码。比如对工作簿中sheet1、sheet3表的标签名“1”、“3”进行保护,但重命名时自动弹出一个对话框提示该标签不能更改,如遇到强行更改时,能否通过程序致使其不保存或返回为原来固定的标签名,谢谢!

  • 4755财富
  • 8鲜花
  • 117技术
  • 积分排行
    83
    帖子
    906
    精华
    11
    分享
    0
    发表于 2008-6-7 17:38:55 |显示全部楼层

    简单的办法是:发现相应的工作表标签被更改后,使用工作表事件和相应的代码将其恢复原状。

    例如:

    在标准模块中输入下面的代码:

    Sub ProtectSheetLabel()
        If Sheet1.Name <> "Sheet1" Or Sheet3.Name <> "Sheet3" Then
            MsgBox "不能修改该工作表标签!", vbExclamation
            Sheet1.Name = "Sheet1"
            Sheet3.Name = "Sheet3"
        End If
    End Sub

    然后在相应的工作表事件中调用该过程,本例中为工作表Sheet1和Sheet3的SelectionChange事件:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Call ProtectSheetLabel
    End Sub

    此时,当回到工作表时,会提示该工作表标签不能修改且将标签改回原状。

    Excel博客:http://www.excelperfect.com
    完美Excel QQ群:140427507
  • 197财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    69
    精华
    0
    分享
    0
    发表于 2008-6-7 22:55:11 |显示全部楼层
    谢谢fanjy关注,我试了一下好像还是不行,请赐教,谢谢!
  • 4755财富
  • 8鲜花
  • 117技术
  • 积分排行
    83
    帖子
    906
    精华
    11
    分享
    0
    发表于 2008-6-7 23:10:43 |显示全部楼层

    示例工作簿 


    附件: 你需要登录才可以下载或查看附件。没有帐号?免费注册
  • 19039财富
  • 20鲜花
  • 22技术
  • 积分排行
    62
    帖子
    7819
    精华
    4
    分享
    0
    发表于 2008-6-7 23:11:30 |显示全部楼层
    QUOTE:
    以下是引用hbth在2008-6-7 22:55:11的发言:
    谢谢fanjy关注,我试了一下好像还是不行,请赐教,谢谢!

    VBA中没有工作表重命名的事件,只能在其他事件中进行测试,范版的代码是可行的,代码是否写错了地方?或者这样也行:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sheet1.Name <> "1" Or Sheet3.Name <> "3" Then
            MsgBox "不能修改该工作表标签!", vbExclamation
            Sheet1.Name = "1"
            Sheet3.Name = "3"
        End If
    End Sub

  • 197财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    69
    精华
    0
    分享
    0
    发表于 2008-6-8 11:52:39 |显示全部楼层

    谢谢fanjyyuanzhuping版主,按照你们帮忙编写的代码我试用了,已经达到我要的效果,非常感谢!

    发表回复

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

    发帖时请遵守我国法律,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任。
    回顶部