代码之家  ›  专栏  ›  技术社区  ›  Dan

超链接工作不正常[重复]

  •  1
  • Dan  · 技术社区  · 6 年前

    这个问题已经有了答案:

    • macro to hyperlink a cell to-self 1个答案
      • 我的Excel文档中有两个超链接。

        在Sheet1,在单元格A1中,我编写了公式, =hyperlink(“‘Sheet1’!a1“,”click”).

        在表1中,在单元格A2中,我做了我认为相同的事情,但使用了交互式图形用户界面。右键单击单元格A2=>hyperlink=>place in this document=>(键入单元格引用)A2.

        我还写了一个非常短的子,这样当我单击这些超链接时,就会得到一个消息框。

        private sub worksheet_FollowHyperlink(byval target as hyperlink)
        MSGBox活动电话
        末端接头
        

        我已将此宏放入Sheet1中。

        当我单击单元格A2时,会得到一个包含单元格值的MsgBox。如预期

        但是,当我单击单元格A1时,不会发生任何事情。

        为什么这两个链接的行为不同?在单元格中使用公式时,如何使单元格A1的行为方式与单元格A2相同?


        为什么?

        我有一个生成csv文件的程序。为了简单起见,结构看起来有点像这样。

        f1,f2,比较
        f3,f2,比较
        

        这意味着很容易覆盖格式。

        然后,我打开此文件并将其另存为.xlsm。我想要的是,当单击比较时,它将运行一个宏。它可以是按钮、超链接或其他任何形式,只要它明显是可点击的。

        因此,我为什么要采用=hyperlink(“sheet1”!a1“,”click”).因为很容易增加列后的数字,并且仍然显示它是一个清晰可点击的东西。

        因此,将csv文件输出的格式快速更改为

        f1,f2,“=hyperlink(”“‘sheet1'!c1“”,“比较”“”
        f3,f2,“=hyperlink(”“‘sheet1'!c2“”,“比较”“”
        

        这项工作的目标是要有一些尽可能自动化的东西,因为这个工作簿可以有超过一千行的内容,所以我不可能手动地在每一行上整理出一个比较按钮。


        更新2

        单击比较按钮时,将运行宏。此宏称为comparefiles。它从同一行的单元格中获取值,但在A列和B列中,将这些值传递到shell命令中,并打开另一个用于比较文件的程序。

        Macro to Hyperlink a cell to itself 1个答案

    我的Excel文档中有两个超链接。

    在第1页,在单元格A1中,我写了公式, =HYPERLINK("#'Sheet1'!A1","click") .

    在表1中,在单元格A2中,我做了我认为相同的事情,但使用了交互式图形用户界面。在单元格A2中单击鼠标右键=>超链接=>在此文档中放置=>(键入单元格引用)A2。

    我还写了一个非常短的子,当我点击这些超链接时,我会得到一个消息框。

    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        MsgBox ActiveCell
    End Sub
    

    我已将此宏放入Sheet1中。

    当我单击单元格A2时,会得到一个包含单元格值的MsgBox。如预期

    Cell A2

    但是,当我单击单元格A1时,什么也不会发生。

    为什么这两个链接的行为不同?在单元格中使用公式时,如何使单元格A1的行为方式与单元格A2相同?


    为什么?

    我有一个生成csv文件的程序。为了简单起见,结构看起来有点像这样。

    f1,f2,compare
    f3,f2,compare
    

    这意味着很容易覆盖格式。

    然后打开此文件并将其另存为 .xlsm .我想要的是,当单击比较时,它将运行一个宏。它可以是按钮、超链接或其他任何形式,只要它明显是可点击的。

    所以我为什么要接近 =hyperlink(“‘sheet1’!A1“,”点击“) 因为很容易增加列后的数字,并且仍然显示它是可点击的。

    因此,将csv文件输出的格式快速更改为

    f1,f2,"=HYPERLINK(""#'Sheet1'!C1"",""compare"")"
    f3,f2,"=HYPERLINK(""#'Sheet1'!C2"",""compare"")"
    

    这项工作的目标是要有一些尽可能自动化的东西,因为这个工作簿可以有超过一千行的内容,所以我不可能手动地在每一行上整理出一个比较按钮。


    更新2

    单击比较按钮时,将运行宏。此宏被调用 CompareFiles .它从同一行但在A列和B列中的单元格中获取值,将它们传递到shell命令中,并打开另一个用于比较文件的程序。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dan    6 年前

    您可以选择所有需要链接到自己的单元格,并使用 Gary's Student 去做。原来的帖子可以找到 here

    Sub HyperAdder()
        Dim r As Range, s As String
        For Each r In Selection
            If Len(r.Text) = 0 Then
                s = "X"
            Else
                s = r.Text
            End If
            ActiveSheet.Hyperlinks.Add Anchor:=r, Address:="", SubAddress:=r.Parent.Name & "!" & r.Address(0, 0), TextToDisplay:=s
        Next r
    End Sub
    

    如果您使用 .vbs 像我这样的文件,在我的情况下转换 .csv 做一些其他的事情,然后你可以使用类似下面的东西。

    For Each cell In YourSheet.UsedRange.Columns("C:F").Cells
        If Len(cell.Text) > 0 Then
            ConflictsSheet.Hyperlinks.Add cell, "", "'" & cell.Parent.Name & "'" & "!" & cell.Address(0, 0), cell.Text
        End If
    Next