我遇到了一个问题,当删除我的Excel文件中的工作表,有下面的代码。
为了跳到先前选择的工作表,我在ThisWorkbook中有以下基本的vba代码。
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Set LstSht = Sh
End Sub
下面的代码被添加到一个模块中,并链接到一个按钮以返回到上一个工作表。
Public LstSht As Worksheet
Sub GoToLast()
LstSht.Activate
End Sub
我注意到,当我在Excel中使用底部的“+”按钮创建一个新工作表时,在已经存在的工作表旁边没有问题。然而,当我按下windows按钮+ F11创建一个新的图表工作表,并删除这一个,我收到一个运行时错误'13':类型不匹配。
如何解决这个问题?
谢谢你的帮助!
亲切问候Jan
2条答案
按热度按时间qhhrdooz1#
在此代码中,我们首先确定停用的表(Sh)和LstSht是否相同。如果它们是相同的,我们检查工作簿中是否还有其他工作表。如果是,我们使用ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)将LstSht设置为最后一个工作表。否则,如果只剩下一个工作表或根本没有工作表,则将LstSht设置为Nothing。
jgwigjjp2#
您的代码表明您希望具有对上一个活动工作表的引用。但是如果删除了this,这个引用必须变成Nothing,这样在代码的其他部分它就会被检查而不会被使用。这可以与另一个事件一起完成:
复制模块中的下一个代码(供常用)
复制ThisWorkBook模块中的下一段代码:
并复制一个使用justDeactivatedSheet的示例,
在表单模块中。在我的例子中,我使用了一个按钮的click事件