Excel教程下载中心,Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,培训学习Office的最佳社区

发新话题
打印

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

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

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

TOP

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

例如:

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

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

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

TOP

谢谢fanjy关注,我试了一下好像还是不行,请赐教,谢谢!

TOP

示例工作簿 


附件: 您所在的用户组无法下载或查看附件

TOP

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

TOP

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

TOP

发新话题
最近访问的版块
本论坛言论纯属发表者个人意见,与Excel Home立场无关,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!