【问题标题】:How to hyperlink to newly created sheet, in the same worksheet iv VBA Excel?如何在同一个工作表iv VBA Excel中超链接到新创建的工作表?
【发布时间】:2021-05-31 01:22:21
【问题描述】:

我在 VBA 方面从来都不是很好,但是在很久没用之后,我更加没有想法了。 我写了一个宏(除其他外):

  1. 打开按钮创建具有给定属性的新行。
  2. excel用户可以手动输入A列记录的编号。
  3. 对于该编号的活动单元格,单击按钮会使用模板创建新工作表并将其命名为活动单元格中的编号。

在下一步中,我想在引用该新创建工作表的记录编号上创建一个超链接,并且最好移动到新工作表。

我已经创建了超链接,但在新工作表中:

Sub HistoriaDostaw()

Dim wb As Workbook
Dim ws As Worksheet
Dim activeWB As Workbook
Dim FilePath As String
Dim ShtName As String
Dim CopyInfo As String

Application.ScreenUpdating = False
Application.DisplayAlerts = False


Set activeWB = Application.ActiveWorkbook
FilePath = activeWB.Path & "\HistoriaDostawca.xltm"

On Error Resume Next


If ActiveCell.Column <> 1 Or ActiveCell.Value2 = "" Then

    MsgBox "Zaznacz liczbe porzadkowa w kolumnie A!", vbCritical, "Blad"
    Exit Sub

Else: ShtName = ActiveCell.Value2
End If

If Not WorkSheetExists(ShtName) Then

Set wb = Application.Workbooks.Open(FilePath)
wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)


ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="ShtName!A1"


activeWB.Activate

activeWB.Sheets(activeWB.Sheets.Count).Name = ShtName

wb.Close False

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End If
End Sub

提前感谢您的帮助。

【问题讨论】:

  • 你的问题不是很清楚。至少对我来说...那么,您是否要创建一个超链接在同一张表中,正如问题标题中所述?或者,您需要在最初活动的工作表中创建超链接,但以新创建的工作表为目标?
  • 也许我的问题不清楚。我有一个包含分包商列表的主表,每个分包商都有单独的编号。该分包商的详细信息包含在单独的表格中,以该个人编号命名。我想在该数字上创建带有详细信息的工作表的 hyperling。
  • 恐怕你没有澄清太多。首先,On Error Resume Next 在这种情况下根本没有帮助。它只是不让你看到你的代码有什么问题。然后,您的代码的活动工作表将是新添加的工作表。这是你想要的吗?如果是,我怀疑您是否真的想要工作表本身的超链接。我错了吗?您可能需要一个超链接来定位之前定义的ShtName。这个假设正确吗?但是如果你再过4-5个小时再回答,恐怕我帮助你的热情就会大打折扣……
  • 如果是这样,请不要理会我的问题,很抱歉浪费您的时间。这是我在空闲时间从事的一个副项目。要回答您的问题,我需要在最初活动的工作表中创建超链接,但针对新创建的工作表。因此,单击按钮时,它会在分包商的数量上创建超链接,例如“Subcontractor1”,针对新创建的名为“Subcontractor1”的工作表。
  • 对解决您的问题更感兴趣的有点荒谬......我在我的答案代码中回答了我们的评论,要求澄清。因为,看起来你在这里的可用性非常低,我根据新的假设调整了我的答案代码......

标签: excel vba hyperlink


【解决方案1】:

请尝试替换:

Set wb = Application.Workbooks.Open(FilePath)
wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)

ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="ShtName!A1"

Set wb = Application.Workbooks.Open(FilePath)
Dim ShAct as worksheet, actCell as Range
Set ShAct = ActiveSheet: Set actCell = ActiveCell

wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)
ActiveSheet.Name = ShtName

ShAct.Hyperlinks.Add actCell, Address:="", SubAddress:="'" & ShtName & "'!A1", TextToDisplay:="Go to" & ShtName

【讨论】:

  • 谢谢,但效果是它在新创建的工作表中创建了一个超链接文本“Go to ShtName”。我的观点是针对新创建的工作表创建分包商数量(位于主活动工作表中)的超链接。
  • @Thomas:“分包商数量”从哪里来?不应该是分配给新创建工作表的名称吗?我想你明白 ActiveSheet 在打开工作簿后应该是当工作簿打开时的活动工作表,并且应该预先记住它的活动单元格,以便使用。然后,复制工作表后,活动的就是这个新创建的工作表。不幸的是,要了解您的需求并不容易。无论如何,我将调整代码以反映上述场景。我只是假设这就是你想要的......
  • @Thomas:还活着吗?您真的需要我们的帮助吗?
猜你喜欢
  • 1970-01-01
  • 2015-07-18
  • 2021-07-08
  • 2018-10-26
  • 1970-01-01
  • 2020-03-04
  • 2015-09-22
  • 2017-06-14
  • 2014-09-21
相关资源
最近更新 更多