Q: 代码如何弄的呢?
A:其实工作原理是在激活每一个工作表时,调用宏表函数检测用户是否禁用VBA宏。如果禁用则关闭程序,否则继续。我是在老刀的基础上增加错误捕捉,就是说程序能识别错误的类型,根据其类型引导程序如何做。所涉及的语句为 XLM 4.0 FUNCTION。
Q:如何引到其他工作薄?
A:首先在你的工作薄中插入4.0宏表(可在网上搜索如何插入4.0宏表的贴子),然后把 MACRO工作表中的内容原样复制刚 插入的工作薄中。在thisworkbook的Workbook_NewSheet事件中插入以下代码:
功能:自动在新增的工作表中插入名称
Private Sub Workbook_NewSheet(ByVal Sh As Object)
ActiveWorkbook.Names.Add Name:=Sh.Name & "!auto_activate", RefersToR1C1:= _
"=Macro!R1C1"
end sub
其次:在模块中插入以下代码:
功能:自动扫描已有的工作表,检测是否已插入名称,如果没有则自动增加
Public Sub AddName()
For Each Sh In ActiveWorkbook.Sheets
If Not ChkName(Sh.Name) Then
ActiveWorkbook.Names.Add Name:=Sh.Name & "!auto_activate", RefersToR1C1:= _
"=Macro!R1C1"
End If
Next
End Sub
Function ChkName(ByVal Sh As String) As Boolean
Dim Ck As Boolean
For Each nm In ActiveWorkbook.Names
If InStr(UCase(nm.Name), UCase(Sh)) > 0 Then
Ck = True
Exit For
End If
Next
ChkName = Ck
End Function
运行 AddName宏。
注意:在提交用户时别忘了,隐藏宏表(MACRO)。
[此贴子已经被作者于2004-11-10 10:52:16编辑过] |