好的,所以我想创建一个宏,允许用户点击按钮,在输入框中键入他们的名字,复制工作表模板,将新工作表移动到书的末尾,重命名它以匹配他们的名字,并使用超链接更新索引表,该超链接在列表中显示其名称,并将其跳转到工作表上的单元格A4 . 超链接部分是我正在努力的地方,虽然我还需要对其余部分进行一些错误处理 . 我尝试了各种解决方案,但我不能让它适合我 .
Sub CopyIIDTemplate()
Dim MySheetName As String
MySheetName = InputBox("Please type your first and last names.")
Sheets("Template").Copy after:=Sheets("Template")
ActiveSheet.Name = MySheetName
ActiveSheet.Range("B1") = MySheetName
ActiveSheet.Move after:=Worksheets(Worksheets.Count)
Sheets("Index").Activate
Sheets("Index").Range("B51").End(xlUp).Offset(1).Activate
ActiveCell = MySheetName
Sheets("Index").Hyperlinks.Add anchor:=Excel.Selection, Address:=ActiveCell.Value, SubAddress:="'" & Sheets("Index").ActiveCell.Text & "'!A4"
End Sub
2 回答
创建超链接时,
Address
参数对于现有工作簿中的位置应为空白,并且SubAddress
参数可以使用MySheetName
变量而不是无效Sheets("Index").ActiveCell.Text
创建(无效因为ActiveCell
是活动单元格 - 它不是a的属性Worksheet
对象) .您的代码的重构版本将是:
注意:如果您的任何员工的名称中包含
'
,则子地址参数必须为SubAddress:="'" & Replace(mySheetName, "'", "''") & "'!A4"
.最后一行中有错误的引用:
将
Sheets("Index").ActiveCell
替换为ActiveCell
,它应该可以工作 .