【问题标题】:Clicking hyperlink changed value of cell on different worksheet to link cell's value单击超链接更改不同工作表上单元格的值以链接单元格的值
【发布时间】:2016-10-03 19:01:14
【问题描述】:

我有一个包含全价报价的工作表和一个单独的工作表,该工作表根据条件等因素对此价格进行更改。

由于有相当多的全价优惠,我认为一种简单的方法是让每个价格成为一个超链接,该超链接复制到具有价格调整的工作表中的单元格,价格将自动调整。

我不太擅长 VBA,但我想出了一个基本代码。

Dim ClickCell As String

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    If Sh.Name = "Book 1" Then
        If ClickCell = "A3" Then
            Sheets("Book 2").Range("B2").Value = "Sample Data"
        End If
    End If
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name = "Book 1" Then
        ClickCell = Target.Address(False, False)
    End If

End Sub

此代码的主要问题(我可以将 IF 语句更改为一个范围以覆盖包含价格的整个列),我无法获取包含超链接的单元格的值并将其粘贴到单元格 B2。 ActiveCell.Value 似乎只复制 B2 的值(应该粘贴价格的单元格,本质上是用它自己替换该单元格的值),而 BeforeDoubleClick 似乎根本不适合我。

最后,我一直将此代码作为工作簿模块运行,因为它跨不同的工作表运行,对吗?

编辑:要求提供数据样本(我不确定这是否正确)。

Sheet1

Sheet2

【问题讨论】:

  • 添加一些数据示例

标签: vba excel


【解决方案1】:

Target 包含超链接所在的单元格。您可以从 Target.SubAddress 获取位置(参见代码中的 cmets):

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    Dim subAddress() As String

    If Sh.Name = "Book 1" Then
        ''.SubAddress is for example 'Book 2'!B2
        ''Get sheet name by splitting into an array by delimiter !
        subAddress = Split(Target.subAddress, "!")
        ''Trim ' from the first item
        subAddress(0) = Replace(subAddress(0), "'", "")

        Sheets(subAddress(0)).Range(Target.subAddress).Value = Target.Range.Value
    End If
End Sub

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多