Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用链接而不是按钮,使用VBA还原到Excel中的上一个选项卡_Vba_Excel - Fatal编程技术网

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

使用链接而不是按钮,使用VBA还原到Excel中的上一个选项卡,vba,excel,Vba,Excel,我四处寻找帮助,但没有成功。我发现不同的代码可以使用工作表上的按钮返回到用户所在的上一个工作表。我工作的公司想要的是几乎每个工作表顶部的链接,作为用户的导航窗格。我已经在必要的页面顶部创建了链接,所有这些链接都按预期工作。我最初在工作簿中添加了代码,以便在单元格“A5”处使用反向链接(上一个工作表用户在工作表上,而不是当前工作表之前的工作表),它工作了一段时间,但由于我一直在处理工作簿中的其他项,代码停止工作。我将工作工作簿上的代码与非工作工作簿上的代码进行了比较,它们是相同的,我不认为是其他代

我四处寻找帮助,但没有成功。我发现不同的代码可以使用工作表上的按钮返回到用户所在的上一个工作表。我工作的公司想要的是几乎每个工作表顶部的链接,作为用户的导航窗格。我已经在必要的页面顶部创建了链接,所有这些链接都按预期工作。我最初在工作簿中添加了代码,以便在单元格“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

如蒙协助,将不胜感激。谢谢

Craig,这应该对你有好处

我使标签看起来像一个超链接&作为一个超链接进行操作。我基本上已将工作表的名称存储在标签的标题中,并让工作簿选择与该文本匹配的工作表

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

克雷格,这应该能帮到你

我使标签看起来像一个超链接&作为一个超链接进行操作。我基本上已将工作表的名称存储在标签的标题中,并让工作簿选择与该文本匹配的工作表

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

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

然后将此代码添加到
此工作簿
模块中:

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",""))
=超链接(“最后一页”,
添加工作簿级别名称“LastSheet”:

然后将此代码添加到
此工作簿
模块中:

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",""))
=超链接(“最后一页”,


如果target.cells.count=1
可能和
Application.Sheets(LastSheet)。激活
它做什么而不工作?@TimWilliams我得到一个编译错误:“预期的变量或过程,而不是模块”。然后它以黄色突出显示第一行“私有子工作表_SelectionChange(ByVal target As Range)”和我的“Call SelectLast”模块以蓝色突出显示。它似乎不再执行此操作,但在某一点上翻动选项卡会导致我出错,尽管我记不起它说了什么。我最终只是将我的所有代码重新标记为注释,以便稍后处理。
如果target.cells.count=1,则可能和
应用程序。工作表(LastSheet)。激活
它做什么而不工作?@TimWilliams我得到一个编译错误:“预期的变量或过程,而不是模块”。然后它以黄色突出显示第一行“私有子工作表\u SelectionChange(ByVal Target As Range)”和我的“Call SelectLast”模块以蓝色突出显示。它似乎不再这样做了,但只是在某个点上翻动选项卡导致我出错,尽管我不记得它说了什么。我最终只是将我的所有代码都标记为注释,以便稍后处理。请原谅我的无知,但你的意思是什么“添加工作簿级别名称“LastSheet”“?是否将其声明为公共变量?公式选项卡>>定义名称;选择“工作簿”作为范围并输入“LastSheet”作为名称。”引用"创建名称时不重要,所以只需接受已填充的内容即可。啊!我原以为你的意思是在VBA中执行此操作。我尝试了你的解决方案,但没有成功。我相信这是因为命名范围在其引用的内容中是静态的。VBA需要确定用户最后所在的工作表,而不是之前的工作表。我的错误-我没有完全测试我的代码…请参阅上面的更新,它现在正确地将名称重新指向正确的位置。我还没有将上一个工作表链接应用到所有工作表,但只是在其中三个工作表上进行了尝试,效果非常好。谢谢!请原谅我的无知,但“添加工作簿级别名称”LastSheet是什么意思?您的意思是将其声明为公共变量吗?公式选项卡>>定义名称;选择“工作簿”作为范围,输入“LastSheet”作为名称。“引用”创建名称时不重要,所以只需接受已填充的内容即可。啊!我原以为你的意思是在VBA中执行此操作。我尝试了你的解决方案,但没有成功。我相信这是因为命名范围在其引用的内容中是静态的。VBA需要确定用户最后所在的工作表,而不是之前的工作表。我的错误-我没有完全测试我的代码…请参阅上面的更新,它现在正确地将名称重新指向正确的位置。我还没有将上一个工作表链接应用到所有工作表,但只是在其中三个工作表上进行了尝试,效果非常好。谢谢!我没有考虑添加标签!可能是因为我从未制作过用户表单,也从未进行过nee一个是d。我现在就试试看,让你知道。谢谢!我尝试了一下,但没能成功。我相信原因是我需要阅读“后退”,“上一页”的标题或者类似的东西,而不是工作表的名称。现在我想起来了,可能是因为我在原始描述中不够具体,所以我会上去更改它。但我不希望链接选择它之前的工作表,我希望链接选择用户上一次访问的任何工作表,可能是也可能不是当前工作表之前的工作表一个。我没有想过添加标签!可能是因为我从来没有做过用户表单,也从来没有必要做一个。我会给你这个