Excel-从其他工作表,超链接和突出显示行上的单元格提取数据

时间:2018-07-09 19:46:13

标签: excel vba excel-vba excel-formula excel-2010

我有一个公式,可以从另一张纸上的一个单元格提取数据并将其链接到该单元格。 =HYPERLINK("#"&ADDRESS(ROW(Sheet2!A2), COLUMN(Sheet2!A2), 4, 1, "Sheet2"), Sheet2!A2)我想知道是否可以将其链接到单元格并同时突出显示该行?任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

这是一种解决方法,可让您继续使用HYPERLINK()

将其放入常规模块中

Public Function Go(Addr)
    Dim arr, rng
    arr = Split(Addr, "!")
    Set rng = ThisWorkbook.Sheets(Replace(arr(0), "'", "")).Range(arr(1))
    rng.EntireRow.Interior.Color = vbYellow  '<< set row color
    Set Go = rng                             '<< return where to link to
End Function

然后修改您的超链接:

=HYPERLINK("#Go("""&ADDRESS(ROW(Sheet2!A2), COLUMN(Sheet2!A2), 4, 1, "Sheet2") & """)", Sheet2!A2)

之所以可行,是因为超链接地址可以是函数调用-只要函数知道返回哪个范围作为链接目标就行了。该函数可以在返回之前执行其他操作,例如在这种情况下突出显示一行。可能需要添加一些代码以清除以前的突出显示。


要添加,因为我认为这很有用:您可以使用此方法,而不是向数据表中的行添加命令按钮-如果需要诸如编辑/保存之类的“操作”,则可以创建两个功能:

Public Function EditRow(rowNum)
    Debug.Print "Set up editing for row " & rowNum
    Set EditRow = ActiveSheet.Cells(rowNum, 1) '<< link back to same cell
End Function

Public Function SaveRow(rowNum)
    Debug.Print "Saving row " & rowNum
    Set SaveRow = ActiveSheet.Cells(rowNum, 2) '<< link back to same cell
End Function

然后每行有几个超链接:

=HYPERLINK("#EditRow(" & ROW() & ")","Edit")
=HYPERLINK("#SaveRow(" & ROW() & ")","Edit")

唯一的缺点是,以这种方式调用函数时,您无法对其进行调试。