2

我正在处理继承的电子表格(创建日期为 1998 年或更早),需要更改对话框表上的引用。我在运行宏列表中看不到宏或类似的东西,工作表本身没有显示在 VBA 项目资源管理器窗口中,这听起来像是我在这里读过的其他问题中的 Excel 4.0 宏. 很多人建议从一开始就重写 Excel 4.0 宏,但问题是我实际上并不知道宏的作用。

具体来说,宏链接到一个命令按钮,当我点击“分配宏”时,宏的名称写在“宏名称”文本框中,但实际上并没有在下拉菜单中列出。如果我尝试通过在“宏名称”文本框中键入相同的名称来将此宏分配给另一个命令按钮,则会收到宏不可用的错误消息。
(截图链接:http: //imgur.com/HlxvLV2

我在这里尝试使用该解决方案(在 VBE 中看不到 excel 表),因为我感兴趣的表实际上不是工作表,所以我将 ws 声明为对话框表。

Public Sub TestAccessToXL4MacroSheet()

Dim ws As DialogSheet
Set ws = ThisWorkbook.ActiveSheet ' succeeds
Debug.Print ws.Name               ' outputs "Macro1"
Set ws = Worksheets("Macro1")     ' fails: "Subscript out of range"

End Sub

结果是工作表的名称出现在即时窗口中。(截图链接:http: //imgur.com/C1L2SQP

这是预期的结果吗?我已经可以将工作表名称视为选项卡,我想在 VBA 编辑器中查看工作表本身。

4

1 回答 1

2

XL4 工作表(例如您的 macro1 工作表)在 VB IDE 中不可见。

要在 Excel 中查看工作表,请右键单击其中一个可见工作表选项卡,然后从菜单中选择命令“取消隐藏...”。您可以选择macro1 工作表并单击“确定”。

或者,尝试

Sub ShowAllSheets()
    Dim sh As Worksheet
    For Each sh In ActiveWorkbook.Sheets
        sh.Visible = True
    Next
End Sub

然后您需要手动将 XL4 代码转换为 VBA。

于 2013-12-26T12:17:56.473 回答