哈哈,"Auto_Activate"这个名称把大家都弄糊涂了哈,我倒是早就搞明白了,我就做好人来解释一下! 你们插入的名称都是“工作簿”中的名称, 而这个"Auto_Activate"名称要求是属于“工作表”中的名称。 要插入属于工作表的名称而不属于工作簿的名称我除了使用VBA代码来实现外,还没有找到别的方法。 假设: 1.宏表的名称叫“宏表1”,要运行宏表的单元格是“$A$1” 2.假设宏表属于第一个索引,即“SHEETS(1)” Sub AddName()'在“工作表中”插入"Auto_Activate"名称 For I = 2 To Sheets.Count '第一个工作表是宏表,所以从第二个工作表起 Sheets(I).Names.Add Name:="Auto_Activate", RefersToR1C1:="=宏表1!R1C1" '注意,该行代码最前面是“Sheets(I).Names”,而不是“ThisWorkbook.Names”,插入的就只是属于该“工作表中”的名称而不是“工作簿中”的名称 Sheets(I).Names("Auto_Activate").Visible = False '隐藏该名称,如果你不想隐藏该名称就不要使用此代码。 Next I End Sub 还可以使用以下代码将宏表的行列给“隐藏/显示”掉(请自行在代码前加上“SHEETS("……")”.来限定工作表) Sub Macro1() '隐藏行列 Columns("A:IV").EntireColumn.Hidden = True Rows("1:65536").EntireRow.Hidden = True End Sub Sub Macro2() '显示行列 Columns("A:IV").EntireColumn.Hidden = False Rows("1:65536").EntireRow.Hidden = False End Sub 与该主题相关的代码还有: Sub showMacroSheet() Sheets("宏表1").Visible = True End Sub Sub veryhideMacroSheet() Sheets("宏表1").Visible = xlVeryHidden End Sub Sub showAllNames() Dim theName As Name For Each theName In Application.Names theName.Visible = True Next End Sub Sub hideName() Worksheets("Sheet1").Names("Auto_Activate").Visible = False End Sub (请根据你实际的情况对以上代码作简单的修改) 不过取消宏则关闭工作簿我也有解开的方法。除非你做成EXE或DLL。 我说得正确的话就多表扬我两句哈[em04][em04][em31][em31]
[此贴子已经被作者于2006-10-13 21:40:56编辑过] |