2016-10-01 73 views
0

我有充分的价格优惠和一个单独的工作表,这使得改建为基于以下因素,如条件这个价格表。点击超链接不同工作表单元格变化值链接单元格的值

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

我对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

+0

添加一些数据示例 – user3598756

回答

0

目标包含在其中超链接所在的小区。您可以从Target.SubAddress获取位置(请参阅代码注释):

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