使用链接而不是按钮,使用VBA恢复到Excel中的上一个选项卡

时间:2017-07-11 19:07:30

标签: excel vba excel-vba

我一直在寻求帮助,但一直没有成功。我找到了不同的代码来使用工作表上的按钮返回到用户所在的上一个工作表。我工作的公司想要的是几乎每个工作表顶部的链接,作为用户的导航窗格。我已经在必要工作表的顶部创建了链接,这些链接都按预期工作。我最初在我的工作簿中添加了代码,以便在单元格“A5”上使用反向链接(前一个工作表用户打开,而不是当前工作表之前的工作表)并且它工作了一段时间但是我已经在工作簿中的其他项目上进展,代码停止工作。我已经将工作工作簿上的代码与非工作工作簿进行了比较,它们是相同的,我不相信其他代码会导致它出现故障。看下面的代码,有没有人对我提出建议?

在具有后退按钮的工作表上我有:

Option Explicit 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
 If Selection.Count = 1 Then
  If Not Intersect(Target, Range("A5")) Is Nothing Then 
   Call SelectLast 
  End If 
 End If
End Sub

在ThisWorkbook对象中,我有以下内容:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
  LastSheet = Sh.Name 
End Sub

最后,我在其自己的模块中有以下内容:

Public LastSheet As String 
Sub SelectLast() 
  Application.Sheets(LastSheet).Select 
End Sub

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

添加工作簿级名称“LastSheet”:

enter image description here

然后在ThisWorkbook模块中添加此代码:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    'EDIT
    ThisWorkbook.Names("lastsheet").RefersToR1C1 = "='" & Sh.Name & "'!R1C1"
End Sub

对于“上一页”超链接,请使用:

=HYPERLINK("#LastSheet","Previous sheet")

如果您希望使用“后退”链接,并在链接中显示目标表单名称:

=HYPERLINK("#lastsheet",
            "<< back to - " & SUBSTITUTE(MID(CELL("address",lastsheet),1+
            FIND("]",CELL("address",lastsheet)),200),"!$A$1",""))

答案 1 :(得分:0)

克雷格,这应该为你做的伎俩

我制作的标签看起来像一个超链接&amp;作为一个人运作。我基本上已经在标签的标题中存储了工作表的名称,并让工作簿选择与该文本匹配的工作表

Private Sub Label1_Click()
    Dim strLoc As String
    strLoc = Label1.Caption
    ThisWorkbook.Sheets(strLoc).Select
End Sub

enter image description here