Mac版Excel VBA创建工作表超链接遇下标越界错误求助
修正后的库存追踪VBA宏代码
以下是针对你的需求修正后的完整代码,适配Mac版Excel 16.16.25,解决了超链接“下标越界”及其他语法问题:
Sub AddRawGoodsSheetAndHyperlink() Dim shtName As String Dim wsRawGoods As Worksheet Dim tblRawGoods As ListObject Dim rngIDCell As Range Dim wsTemplate As Worksheet Dim wsNew As Worksheet ' 输入新Raw Goods ID shtName = InputBox("请输入新的Raw Goods ID:", "创建库存工作表") If shtName = "" Then Exit Sub ' 用户取消输入则退出 ' 绑定RawGoods工作表和表格 Set wsRawGoods = ThisWorkbook.Worksheets("RawGoods") ' 确保工作表名拼写正确 Set tblRawGoods = wsRawGoods.ListObjects("RawGoods_Table") ' 验证ID已在表格的[Raw Goods ID]列(B列)中 On Error Resume Next Set rngIDCell = tblRawGoods.ListColumns("Raw Goods ID").DataBodyRange.Find( _ What:=shtName, LookIn:=xlValues, LookAt:=xlWhole) On Error GoTo 0 If rngIDCell Is Nothing Then MsgBox "该ID未在RawGoods_Table中找到,请先添加ID到表格!", vbExclamation Exit Sub End If ' 检查同名工作表是否存在 On Error Resume Next Set wsNew = ThisWorkbook.Worksheets(shtName) On Error GoTo 0 If Not wsNew Is Nothing Then MsgBox "已存在名为" & shtName & "的工作表!", vbExclamation Exit Sub End If ' 基于模板创建新工作表(假设模板名为"RawGoods_Template") Set wsTemplate = ThisWorkbook.Worksheets("RawGoods_Template") ' 确保模板名拼写正确 wsTemplate.Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) Set wsNew = ActiveSheet wsNew.Name = shtName ' 为对应单元格添加超链接,保留原显示文本 wsRawGoods.Hyperlinks.Add _ Anchor:=rngIDCell, _ Address:="", _ SubAddress:="'" & shtName & "'!A1", _ TextToDisplay:=rngIDCell.Value ' 保留原单元格文本 MsgBox "工作表" & shtName & "已创建,超链接已添加完成!", vbInformation End Sub
关键修正点说明:
- 工作表名拼写验证:确保
wsRawGoods和wsTemplate的工作表名与实际文件中的完全一致,这是“下标越界”的常见原因 - 变量引用修正:明确绑定表格和工作表对象,避免因未正确指定工作表导致的对象引用错误
- 超链接语法修正:
SubAddress参数使用单引号包裹工作表名,处理含特殊字符的ID- 正确使用
TextToDisplay参数保留原单元格文本,避免硬编码或错误引用
- 错误处理优化:针对查找单元格、检查工作表存在的操作添加
On Error处理,避免意外报错
内容的提问来源于stack exchange,提问作者James Menden
相关产品推荐
相关产品推荐

