在ExcelVBA中看到有朋友经常使用Code来判断一个工作表的状态,原因可能是因为Code这个属性所带来的。因为在微软的说明文档中CodenName属性运行时不可更改,是一个只读属性。此属性在运行时真的不可以更改吗? 其实可以找一个变通方法,我找了半天,发现工作表的CodeName应该就是工作表在VBE工程中所在部件的名称,那么我们就可以通过修改此名称来达到修改工作表的CodeName的目的;
[注:要使用此过程请事先点击 工具 菜单--> 宏 -->安全性,在弹出的 安全性 对话框的 可靠发行商标签 中钩选 信任对“vb项目”的访问。]
[注:要使用此过程请事先点击 工具 菜单--> 宏 -->安全性,在弹出的 安全性 对话框的 可靠发行商标签 中钩选 信任对“vb项目”的访问。]
Sub ChangCodename()
Dim S As String
MsgBox "CodeName为:" & ActiveSheet.CodeName
S = Application.InputBox("请输入新的CodeName:", "CodeName")
If S = "" Then MsgBox "没有输入名称": Exit Sub
On Error GoTo handler
ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).Name = S
MsgBox "CodeName已经修改为:" & ActiveSheet.CodeName
Exit Sub
handler:
Select Case Err.Number
Case 50132
MsgBox "输入名称有误"
Case 1004
MsgBox "未信任到VB工程的访问,请在信任选项中钩选到VB工程的访问"
Case Else
MsgBox Err.Number & Err.Description
End Select
End Sub
Dim S As String
MsgBox "CodeName为:" & ActiveSheet.CodeName
S = Application.InputBox("请输入新的CodeName:", "CodeName")
If S = "" Then MsgBox "没有输入名称": Exit Sub
On Error GoTo handler
ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).Name = S
MsgBox "CodeName已经修改为:" & ActiveSheet.CodeName
Exit Sub
handler:
Select Case Err.Number
Case 50132
MsgBox "输入名称有误"
Case 1004
MsgBox "未信任到VB工程的访问,请在信任选项中钩选到VB工程的访问"
Case Else
MsgBox Err.Number & Err.Description
End Select
End Sub